Получается, что лист "Импорт...." (второго файла) будет отображать данные листа "Экспорт..." (первого файла) и благодаря УФ из таблицы "Импорт..." будем подтягивать неоходимые данные в нужные таблицы? Так получится?
Получается, что лист "Импорт...." (второго файла) будет отображать данные листа "Экспорт..." (первого файла) и благодаря УФ из таблицы "Импорт..." будем подтягивать неоходимые данные в нужные таблицы? Так получится?
Получается, что...." благодаря УФ из таблицы "Импорт..." будем подтягивать неоходимые данные в нужные таблицы? Так получится?
ТАК - задумано! Надеюсь, получится. Только не благодаря УФ, а благодаря переданным значениям колонки "Статус".
Что ж, идём дальше! Расскажите поподробнее, по каким признакам теперь инфа из листа "Импорт" должна разлететься по конкретным листам станков? Не обращайте внимания, что в "Импорте" на одну операцию приходится несколько записей - мы будем ориентироваться на самую позднюю из них (по "Таймштампу"), именно она будет текущей актуальной (как ее выделить формулой - разберемся по ходу).
Получается, что...." благодаря УФ из таблицы "Импорт..." будем подтягивать неоходимые данные в нужные таблицы? Так получится?
ТАК - задумано! Надеюсь, получится. Только не благодаря УФ, а благодаря переданным значениям колонки "Статус".
Что ж, идём дальше! Расскажите поподробнее, по каким признакам теперь инфа из листа "Импорт" должна разлететься по конкретным листам станков? Не обращайте внимания, что в "Импорте" на одну операцию приходится несколько записей - мы будем ориентироваться на самую позднюю из них (по "Таймштампу"), именно она будет текущей актуальной (как ее выделить формулой - разберемся по ходу).Gustav
Что ж, идём дальше! Расскажите поподробнее, по каким признакам теперь инфа из листа "Импорт" должна разлететься по конкретным листам станков?
Основной признак - это краткое наименование операции. ( Удалено - Запрещается выкладывать ссылки на файлы, выложенные на сторонних ресурсах ). При этом на скриншоте 1 - это краткие наименования разных операций, 2 - Повторяющие операции одного типа в операционном процессе одной детали (Т2 и ФЧПУ2). В соответствии с кратким наименованием операции в первом файле ("Общие стадии выполнения работ по проекту 1789") есть определенные листы во втором файле ("Загрузка операционных центррв производства деталей проектов"), в названиях которых присутствует это краткое наименование операции ( Удалено - Запрещается выкладывать ссылки на файлы, выложенные на сторонних ресурсах ). В соответствии с названием операции, деталь должна попадать в очередь на оборудование, способное выполнять эту операцию (или в общую очередь, если станков на листе более одного - Удалено - Запрещается выкладывать ссылки на файлы, выложенные на сторонних ресурсах)
Что ж, идём дальше! Расскажите поподробнее, по каким признакам теперь инфа из листа "Импорт" должна разлететься по конкретным листам станков?
Основной признак - это краткое наименование операции. ( Удалено - Запрещается выкладывать ссылки на файлы, выложенные на сторонних ресурсах ). При этом на скриншоте 1 - это краткие наименования разных операций, 2 - Повторяющие операции одного типа в операционном процессе одной детали (Т2 и ФЧПУ2). В соответствии с кратким наименованием операции в первом файле ("Общие стадии выполнения работ по проекту 1789") есть определенные листы во втором файле ("Загрузка операционных центррв производства деталей проектов"), в названиях которых присутствует это краткое наименование операции ( Удалено - Запрещается выкладывать ссылки на файлы, выложенные на сторонних ресурсах ). В соответствии с названием операции, деталь должна попадать в очередь на оборудование, способное выполнять эту операцию (или в общую очередь, если станков на листе более одного - Удалено - Запрещается выкладывать ссылки на файлы, выложенные на сторонних ресурсах)
Прописал без ссылок. Основной признак - это краткое наименование операции (Пример ШЛ, ФЧПУ, ТО, Т, С и т.д). При этом есть краткие наименования разных операций и повторяющие операции одного типа в операционном процессе одной детали (например Т2 и ФЧПУ2 это те же Т и ФЧПУ, причина - корректная синхронизация статусов на листе "Все детали проекта 1789") В соответствии с кратким наименованием операции в первом файле ("Общие стадии выполнения работ по проекту 1789") есть определенные листы во втором файле ("Загрузка операционных центррв производства деталей проектов"), в названиях которых присутствует это краткое наименование операции. В соответствии с названием операции, деталь должна попадать в очередь на оборудование, способное выполнять эту операцию (или в общую очередь, если станков на листе более одного - есть отдельный столбец общая очередь).
Прописал без ссылок. Основной признак - это краткое наименование операции (Пример ШЛ, ФЧПУ, ТО, Т, С и т.д). При этом есть краткие наименования разных операций и повторяющие операции одного типа в операционном процессе одной детали (например Т2 и ФЧПУ2 это те же Т и ФЧПУ, причина - корректная синхронизация статусов на листе "Все детали проекта 1789") В соответствии с кратким наименованием операции в первом файле ("Общие стадии выполнения работ по проекту 1789") есть определенные листы во втором файле ("Загрузка операционных центррв производства деталей проектов"), в названиях которых присутствует это краткое наименование операции. В соответствии с названием операции, деталь должна попадать в очередь на оборудование, способное выполнять эту операцию (или в общую очередь, если станков на листе более одного - есть отдельный столбец общая очередь).gutsoff200991
Итак, второй файл "Загрузка опер.центров". Очевидно, нужно, чтобы каким-то образом детали с листа "Импорт" в статусе "В работе" оказались бы на листах станков для обработки.
"Оказаться" на одном из листов станков деталь может: * либо в результате работы некоторой формулы, находящейся на этом листе (и "выдергивающей" и отображающей наименование детали в определенном месте листа) * либо в результате копирования (ввода) имени детали с листа "Импорт" на лист нужного станка, т.е. только текст без формулы (подобное копирование можно осуществить либо скриптом, либо выбором из списка)
Что выбрать? Склоняюсь в пользу второго варианта - копирования (ввода), т.е. без формул. И вот почему. Я смотрю на лист "Фрезерные (ФУ)" и вижу крайнюю правую колонку "Очередь из деталей на станки", в которой находится деталь (ячейка с текстом) "TPYG.1789.00.08_Пуансон". ВОПРОС: Как она там оказалась (или окажется)? В результате работы некоторого автоматического скрипта-загрузчика (который мы напишем) за счет того, что в наименовании листа встречается код операции "ФУ", с которым эта деталь "приехала" из первого файла? Или в результате выбора из некоторого будущего списка (который мы туда прикрутим)? Сейчас там формула с функцией IMPORTRANGE со ссылкой на конкретную ячейку первого файла и вопрос в том, следование каким именно правилам сформировало эту ссылку.
Что будет дальше с этой ячейкой-деталью? Её подцепят мышкой и перетащат из колонки "Очередь" в колонку "Номер и обозначение детали" одного из станков, расположенных на этом листе слева? Дальше, видимо, в выбранном станке для этой детали будут заполнены поля: "t обработки, ч", "время начала обработки", "время окончания обработки", "коментарии", так?
Далее предположу, что после заполнения определенного поля, например, "Время окончания", (или после наступления какого-то заранее оговоренного события) деталь вместе со всей своей информацией должна будет "покинуть" станок и "переместиться" на какой-нибудь лист типа "Архив Обработанных деталей".
Похожи ли эти мои предположения на правду? Можете, пожалуйста, прокомментировать и дополнить описание этой картины "станочного" мира, как Вы ее изначально задумали к осуществлению?
Итак, второй файл "Загрузка опер.центров". Очевидно, нужно, чтобы каким-то образом детали с листа "Импорт" в статусе "В работе" оказались бы на листах станков для обработки.
"Оказаться" на одном из листов станков деталь может: * либо в результате работы некоторой формулы, находящейся на этом листе (и "выдергивающей" и отображающей наименование детали в определенном месте листа) * либо в результате копирования (ввода) имени детали с листа "Импорт" на лист нужного станка, т.е. только текст без формулы (подобное копирование можно осуществить либо скриптом, либо выбором из списка)
Что выбрать? Склоняюсь в пользу второго варианта - копирования (ввода), т.е. без формул. И вот почему. Я смотрю на лист "Фрезерные (ФУ)" и вижу крайнюю правую колонку "Очередь из деталей на станки", в которой находится деталь (ячейка с текстом) "TPYG.1789.00.08_Пуансон". ВОПРОС: Как она там оказалась (или окажется)? В результате работы некоторого автоматического скрипта-загрузчика (который мы напишем) за счет того, что в наименовании листа встречается код операции "ФУ", с которым эта деталь "приехала" из первого файла? Или в результате выбора из некоторого будущего списка (который мы туда прикрутим)? Сейчас там формула с функцией IMPORTRANGE со ссылкой на конкретную ячейку первого файла и вопрос в том, следование каким именно правилам сформировало эту ссылку.
Что будет дальше с этой ячейкой-деталью? Её подцепят мышкой и перетащат из колонки "Очередь" в колонку "Номер и обозначение детали" одного из станков, расположенных на этом листе слева? Дальше, видимо, в выбранном станке для этой детали будут заполнены поля: "t обработки, ч", "время начала обработки", "время окончания обработки", "коментарии", так?
Далее предположу, что после заполнения определенного поля, например, "Время окончания", (или после наступления какого-то заранее оговоренного события) деталь вместе со всей своей информацией должна будет "покинуть" станок и "переместиться" на какой-нибудь лист типа "Архив Обработанных деталей".
Похожи ли эти мои предположения на правду? Можете, пожалуйста, прокомментировать и дополнить описание этой картины "станочного" мира, как Вы ее изначально задумали к осуществлению?Gustav
Сейчас там формула с функцией IMPORTRANGE со ссылкой на конкретную ячейку первого файла и вопрос в том, следование каким именно правилам сформировало эту ссылку.
Это я безуспешно пытался что-то сделать, достичь какого-то результата, но если честно, совершенно не понимал как это сделать.
В результате работы некоторого автоматического скрипта-загрузчика (который мы напишем) за счет того, что в наименовании листа встречается код операции "ФУ", с которым эта деталь "приехала" из первого файла?
Склоняюсь к этому варианту, потому что в будущем в файл со станками будут добавляться другие детали из других проэктов.
Её подцепят мышкой и перетащат из колонки "Очередь" в колонку "Номер и обозначение детали" одного из станков, расположенных на этом листе слева? Дальше, видимо, в выбранном станке для этой детали будут заполнены поля: "t обработки, ч", "время начала обработки", "время окончания обработки", "коментарии", так?
Именно так и будет. Если это возможно, то было бы очень хорошо, если скрипт смог бы автоматически заполнять время начала и конца обработки.
Далее предположу, что после заполнения определенного поля, например, "Время окончания", (или после наступления какого-то заранее оговоренного события) деталь вместе со всей своей информацией должна будет "покинуть" станок и "переместиться" на какой-нибудь лист типа "Архив Обработанных деталей".
Предполагалось то, что в очередь на станки (крайний правый столбей на листе ФУ) попадает деталь с выделением ячейки желтым, после окончания обработки деталь остается в таблице станка, но ячейка выдекляется серым цветом. Это возможно и не приведет к затруднению работы скрипта в будущем (допустим если в таблице станка скопится более 500 значений)?
Сейчас там формула с функцией IMPORTRANGE со ссылкой на конкретную ячейку первого файла и вопрос в том, следование каким именно правилам сформировало эту ссылку.
Это я безуспешно пытался что-то сделать, достичь какого-то результата, но если честно, совершенно не понимал как это сделать.
В результате работы некоторого автоматического скрипта-загрузчика (который мы напишем) за счет того, что в наименовании листа встречается код операции "ФУ", с которым эта деталь "приехала" из первого файла?
Склоняюсь к этому варианту, потому что в будущем в файл со станками будут добавляться другие детали из других проэктов.
Её подцепят мышкой и перетащат из колонки "Очередь" в колонку "Номер и обозначение детали" одного из станков, расположенных на этом листе слева? Дальше, видимо, в выбранном станке для этой детали будут заполнены поля: "t обработки, ч", "время начала обработки", "время окончания обработки", "коментарии", так?
Именно так и будет. Если это возможно, то было бы очень хорошо, если скрипт смог бы автоматически заполнять время начала и конца обработки.
Далее предположу, что после заполнения определенного поля, например, "Время окончания", (или после наступления какого-то заранее оговоренного события) деталь вместе со всей своей информацией должна будет "покинуть" станок и "переместиться" на какой-нибудь лист типа "Архив Обработанных деталей".
Предполагалось то, что в очередь на станки (крайний правый столбей на листе ФУ) попадает деталь с выделением ячейки желтым, после окончания обработки деталь остается в таблице станка, но ячейка выдекляется серым цветом. Это возможно и не приведет к затруднению работы скрипта в будущем (допустим если в таблице станка скопится более 500 значений)?gutsoff200991
Сообщение отредактировал gutsoff200991 - Четверг, 26.01.2023, 21:18
Если это возможно, то было бы очень хорошо, если скрипт смог бы автоматически заполнять время начала и конца обработки.
Там три поля: "Время обработки", "Начало" и "Окончание". Скрипт, конечно, сможет заполнить любое третье поле при известных двух других. Но пока не понятно, кто и в какой момент заполнит эти два других ("известных").
Предполагалось то, что в очередь на станки (крайний правый столбей на листе ФУ) попадает деталь с выделением ячейки желтым, после окончания обработки деталь остается в таблице станка, но ячейка выдекляется серым цветом. Это возможно и не приведет к затруднению работы скрипта в будущем (допустим если в таблице станка скопится более 500 значений)?
А сделайте, пожалуйста, во втором файле копию листа станков "(ФУ)" и нарисуйте на нём вручную такую картину, как Вы ее видите: 1. две детали ожидают очереди в крайней правой колонке - покрасьте вручную их жёлтым 2. две детали находятся на обработке в конкретном станке - покрасьте их (каким?) цветом, заполните поля типа "t обработки" 3. две детали закончили обработку - покрасьте их вручную серым, где они находятся - опять справа? выше/ниже жёлтых? Как они переместились обратно в очередь: вручную мышкой перетащили? или в первом файле установили статус "Выполнено", который протранслировался на лист "Импорт" и какой-то робот-скрипт, запускаемый, скажем, каждые 10 минут (или каждый час), увидев новый статус, перенес их с выполнения обратно в очередь. Понятно, что в рамках ручной разрисовки можно перетащить мышкой, точнее, даже просто набить текст в колонке "Очередь", но подумайте и напишите, как хотелось бы, чтобы это происходило.
Или же третьего шага не происходит, они никуда не перемещаются обратно в очередь и остаются в колонке станка? В общем, нарисуйте пример, всё станет понятнее.
[p.s.]Извиняюсь, перечитал Вас - увидел, что Вы "оставляете" деталь в колонке станка. [/p.s.]Ок, тогда еще уточняющий вопрос. А каких временах обработки мы говорим (порядок)? Как быстро в колонке станка накопится 500 значений?
Если это возможно, то было бы очень хорошо, если скрипт смог бы автоматически заполнять время начала и конца обработки.
Там три поля: "Время обработки", "Начало" и "Окончание". Скрипт, конечно, сможет заполнить любое третье поле при известных двух других. Но пока не понятно, кто и в какой момент заполнит эти два других ("известных").
Предполагалось то, что в очередь на станки (крайний правый столбей на листе ФУ) попадает деталь с выделением ячейки желтым, после окончания обработки деталь остается в таблице станка, но ячейка выдекляется серым цветом. Это возможно и не приведет к затруднению работы скрипта в будущем (допустим если в таблице станка скопится более 500 значений)?
А сделайте, пожалуйста, во втором файле копию листа станков "(ФУ)" и нарисуйте на нём вручную такую картину, как Вы ее видите: 1. две детали ожидают очереди в крайней правой колонке - покрасьте вручную их жёлтым 2. две детали находятся на обработке в конкретном станке - покрасьте их (каким?) цветом, заполните поля типа "t обработки" 3. две детали закончили обработку - покрасьте их вручную серым, где они находятся - опять справа? выше/ниже жёлтых? Как они переместились обратно в очередь: вручную мышкой перетащили? или в первом файле установили статус "Выполнено", который протранслировался на лист "Импорт" и какой-то робот-скрипт, запускаемый, скажем, каждые 10 минут (или каждый час), увидев новый статус, перенес их с выполнения обратно в очередь. Понятно, что в рамках ручной разрисовки можно перетащить мышкой, точнее, даже просто набить текст в колонке "Очередь", но подумайте и напишите, как хотелось бы, чтобы это происходило.
Или же третьего шага не происходит, они никуда не перемещаются обратно в очередь и остаются в колонке станка? В общем, нарисуйте пример, всё станет понятнее.
[p.s.]Извиняюсь, перечитал Вас - увидел, что Вы "оставляете" деталь в колонке станка. [/p.s.]Ок, тогда еще уточняющий вопрос. А каких временах обработки мы говорим (порядок)? Как быстро в колонке станка накопится 500 значений?Gustav
Есть файл, как это делали раньше в ручную - https://docs.google.com/spreads....294720. Обратите внимание, что иногда в ручную прописывается красная строка "Время чистки"
1. две детали ожидают очереди в крайней правой колонке - покрасьте вручную их жёлтым
1. В правой колонке "очередь на станки" находится одна нераспределенная деталь, которую еще не распределили. Она ждет ручного распределения на свободный станок и подходящий по параметрам станок. В данном случае это либо второй (свободный) станок, либо первый, после того, как он освободится (выполнит операцию с деталью, которая сейчас в обработке)
или в первом файле установили статус "Выполнено", который протранслировался на лист "Импорт" и какой-то робот-скрипт, запускаемый, скажем, каждые 10 минут (или каждый час), увидев новый статус, перенес их с выполнения обратно в очередь.
То, что выполненные детали остаются в очереди станка и выделяются серым, как выполненные написал выше. Хочу уточнить, подразумевалось то что все действия, кроме ручного переноса детали в очередь станка, выполнялись бы как вы пишите "в первом файле установили статус "Выполнено", который протранслировался на лист "Импорт" и какой-то робот-скрипт, запускаемый, скажем, каждые 10 минут (или каждый час), увидев новый статус и...." выполнил постановку в очередь на станок и пометку ячейки выполненной детали серым цветом.
Или же третьего шага не происходит, они никуда не перемещаются обратно в очередь и остаются в колонке станка?
Да
Есть файл, как это делали раньше в ручную - https://docs.google.com/spreads....294720. Обратите внимание, что иногда в ручную прописывается красная строка "Время чистки"
1. две детали ожидают очереди в крайней правой колонке - покрасьте вручную их жёлтым
1. В правой колонке "очередь на станки" находится одна нераспределенная деталь, которую еще не распределили. Она ждет ручного распределения на свободный станок и подходящий по параметрам станок. В данном случае это либо второй (свободный) станок, либо первый, после того, как он освободится (выполнит операцию с деталью, которая сейчас в обработке)
или в первом файле установили статус "Выполнено", который протранслировался на лист "Импорт" и какой-то робот-скрипт, запускаемый, скажем, каждые 10 минут (или каждый час), увидев новый статус, перенес их с выполнения обратно в очередь.
То, что выполненные детали остаются в очереди станка и выделяются серым, как выполненные написал выше. Хочу уточнить, подразумевалось то что все действия, кроме ручного переноса детали в очередь станка, выполнялись бы как вы пишите "в первом файле установили статус "Выполнено", который протранслировался на лист "Импорт" и какой-то робот-скрипт, запускаемый, скажем, каждые 10 минут (или каждый час), увидев новый статус и...." выполнил постановку в очередь на станок и пометку ячейки выполненной детали серым цветом.
Если вы про это "Там три поля: "Время обработки", Начало и "Окончание"...." то это вообще не обязательно. Эта Информация есть на листе Импорт. "Время начала обработки" - это время когда на листе "Импопрт" появился статус, что деталь "в работе" на данной операции. "Время окончания обработки" - это время когда на листе "Импопрт" появился статус, что деталь "Выполнена" на данной операции там кажется два временных значения.
Если вы про это "Там три поля: "Время обработки", Начало и "Окончание"...." то это вообще не обязательно. Эта Информация есть на листе Импорт. "Время начала обработки" - это время когда на листе "Импопрт" появился статус, что деталь "в работе" на данной операции. "Время окончания обработки" - это время когда на листе "Импопрт" появился статус, что деталь "Выполнена" на данной операции там кажется два временных значения.
Сделал свою копию Вашего второго файла https://docs.google.com/spreads....sharing (id таблицы 1KSgnB1HzUF1IjKlwekbe0F1ZsRW-X55bfhxI4L18xxw ) и расширил ее новым листом "Списки" (самый крайний правый, после "Импорта"). На этом новом листе пока два списка: * список "Импорта", расположенный по убыванию значений времени в поле "Таймштамп", т.е. развернутый на 180 градусов - нужен для получения следующего списка * список уникальных сочетаний "наименование детали-операция" с актуальными статусам (т.е. статусами на самый поздний таймштамп для этого уникального сочетания)
Первый список создан формулой в ячейке A3 листа "Списки": [vba]
Код
=QUERY({'ИмпортОчередиДеталейНаСтанки'!A2:D}; "select Col2, Col3, Col4, Col1 where Col1 is not null order by Col1 desc")
[/vba]
Второй список создан двумя формулами на листе "Списки": в ячейке F3 - уникальные сочетания "деталь-операция": [vba]
Код
=SORT(UNIQUE(FILTER(A3:B;D3:D<>"")))
[/vba] в ячейке H3 - ВПР-массив актуальных статусов "деталей-операций" (самых поздних по таймштампу), синхронизированный по размеру с массивом уникальных сочетаний: [vba]
[/vba] Поскольку формула находится в ячейке выше рабочей области листа, начинающейся с 3-й строки, содержимое ячеек колонки S можно свободно копировать и даже перетаскивать мышкой, не боясь сломать формулу. Лучше копировать (при перетаскивании может нарушаться форматирование ячеек "Очереди").
Если скопировать ячейку с названием детали из очереди, а затем вставить ее в одну из станковых колонок "номер и обозначение детали", то деталь из очереди исчезнет! Т.е. как будто бы реально перешла из зоны ожидания в обработку. Визуально очень неплохо смотрится! Чтобы вернуть деталь обратно в очередь (например, вытащили по ошибке раньше времени), ее нужно просто стереть клавишей Delete в станковой колонке "номер и обозначение детали" - и деталь снова "возникнет" в очереди. Однако, не нужно пытаться перетащить ее со станка в очередь мышкой - формула временно сломается с ошибкой #REF!. Т.е. общее правило: таскать из очереди можно, а впихивать (грубо) обратно - нет (для этого нужно пользоваться клавишей Delete в другой колонке).
Наконец, еще одна мулька на листе станка. Клавиша Delete, нажатая на любой ячейке с текстом "номер и обозначение детали" (как будто бы хотим стереть эту ячейку) приводит к тому, что текст в ячейке восстанавливается, а все детали, находящиеся в списке станка, смещаются на одну строку ниже, освобождая таким образом первую строку станка для новой детали, которую планируется добавить из очереди справа. Делается мулька при помощи такого скрипта: [vba]
Код
function onEdit(e) { // "команда сдёргивания" - нажатие клавиши Delete на ячейке приводит к выполнению var origValue = e.oldValue; if (origValue.toUpperCase() == "номер и обозначение детали".toUpperCase()) { // восстановление содержимого ячейки e.range.setValue("номер и обозначение детали"); // выполнение команды - сдвиг заполненных ячеек вниз // с образованием пустого места для "размещения" новой детали e.range.offset(1, -1, 1, 6).insertCells(SpreadsheetApp.Dimension.ROWS); } }
[/vba]
Думаю, что надо сделать такие же очереди-"предбанники" справа и для других операций, даже если станок один на листе - очень уж наглядно получается! К тому же, существенно то, что в "Очереди" справа работает формула, а по рабочим областям станков перемещаются ячейки-детали с простым текстовым содержимым (константы). Т.е. предлагаю сделать единый подход на всех листах станков - вне зависимости от того, один ли станок на листе или несколько.
Посмотрите, поиграйтесь с новым функционалом. Прокомментируйте, удобно ли получается. Моя копия сейчас настроена на импорт из Вашего первого файла. Поэтому можете погенерить в своём первом файле ещё детали на обработку и проведите их во второй файл на станки (сделайте себе новую копию второго файла с моей).
И надо подумать как дальше внедрять новый функционал. Предлагаю, как уже получилось один раз, поочередные действия. Я делаю набросок чего-то на фрагменте, после чего Вы делаете свою копию с моей, по уже известной аналогии дорабатываете все остальные родственные фрагменты и опять выкладываете свою обновленную версию, с которой уже я делаю новую копию и внедряю в неё новые элементы фуцнкционала. И так дальше по очереди.
Я сейчас внедрил формулы на двух листах: ФЧПУ и ФУ. Вам предлагаю разобраться и внедрить их на остальных станках. А я тем временем займусь условным форматированием во втором файле (жёлтая и серая раскраска).
Сделал свою копию Вашего второго файла https://docs.google.com/spreads....sharing (id таблицы 1KSgnB1HzUF1IjKlwekbe0F1ZsRW-X55bfhxI4L18xxw ) и расширил ее новым листом "Списки" (самый крайний правый, после "Импорта"). На этом новом листе пока два списка: * список "Импорта", расположенный по убыванию значений времени в поле "Таймштамп", т.е. развернутый на 180 градусов - нужен для получения следующего списка * список уникальных сочетаний "наименование детали-операция" с актуальными статусам (т.е. статусами на самый поздний таймштамп для этого уникального сочетания)
Первый список создан формулой в ячейке A3 листа "Списки": [vba]
Код
=QUERY({'ИмпортОчередиДеталейНаСтанки'!A2:D}; "select Col2, Col3, Col4, Col1 where Col1 is not null order by Col1 desc")
[/vba]
Второй список создан двумя формулами на листе "Списки": в ячейке F3 - уникальные сочетания "деталь-операция": [vba]
Код
=SORT(UNIQUE(FILTER(A3:B;D3:D<>"")))
[/vba] в ячейке H3 - ВПР-массив актуальных статусов "деталей-операций" (самых поздних по таймштампу), синхронизированный по размеру с массивом уникальных сочетаний: [vba]
[/vba] Поскольку формула находится в ячейке выше рабочей области листа, начинающейся с 3-й строки, содержимое ячеек колонки S можно свободно копировать и даже перетаскивать мышкой, не боясь сломать формулу. Лучше копировать (при перетаскивании может нарушаться форматирование ячеек "Очереди").
Если скопировать ячейку с названием детали из очереди, а затем вставить ее в одну из станковых колонок "номер и обозначение детали", то деталь из очереди исчезнет! Т.е. как будто бы реально перешла из зоны ожидания в обработку. Визуально очень неплохо смотрится! Чтобы вернуть деталь обратно в очередь (например, вытащили по ошибке раньше времени), ее нужно просто стереть клавишей Delete в станковой колонке "номер и обозначение детали" - и деталь снова "возникнет" в очереди. Однако, не нужно пытаться перетащить ее со станка в очередь мышкой - формула временно сломается с ошибкой #REF!. Т.е. общее правило: таскать из очереди можно, а впихивать (грубо) обратно - нет (для этого нужно пользоваться клавишей Delete в другой колонке).
Наконец, еще одна мулька на листе станка. Клавиша Delete, нажатая на любой ячейке с текстом "номер и обозначение детали" (как будто бы хотим стереть эту ячейку) приводит к тому, что текст в ячейке восстанавливается, а все детали, находящиеся в списке станка, смещаются на одну строку ниже, освобождая таким образом первую строку станка для новой детали, которую планируется добавить из очереди справа. Делается мулька при помощи такого скрипта: [vba]
Код
function onEdit(e) { // "команда сдёргивания" - нажатие клавиши Delete на ячейке приводит к выполнению var origValue = e.oldValue; if (origValue.toUpperCase() == "номер и обозначение детали".toUpperCase()) { // восстановление содержимого ячейки e.range.setValue("номер и обозначение детали"); // выполнение команды - сдвиг заполненных ячеек вниз // с образованием пустого места для "размещения" новой детали e.range.offset(1, -1, 1, 6).insertCells(SpreadsheetApp.Dimension.ROWS); } }
[/vba]
Думаю, что надо сделать такие же очереди-"предбанники" справа и для других операций, даже если станок один на листе - очень уж наглядно получается! К тому же, существенно то, что в "Очереди" справа работает формула, а по рабочим областям станков перемещаются ячейки-детали с простым текстовым содержимым (константы). Т.е. предлагаю сделать единый подход на всех листах станков - вне зависимости от того, один ли станок на листе или несколько.
Посмотрите, поиграйтесь с новым функционалом. Прокомментируйте, удобно ли получается. Моя копия сейчас настроена на импорт из Вашего первого файла. Поэтому можете погенерить в своём первом файле ещё детали на обработку и проведите их во второй файл на станки (сделайте себе новую копию второго файла с моей).
И надо подумать как дальше внедрять новый функционал. Предлагаю, как уже получилось один раз, поочередные действия. Я делаю набросок чего-то на фрагменте, после чего Вы делаете свою копию с моей, по уже известной аналогии дорабатываете все остальные родственные фрагменты и опять выкладываете свою обновленную версию, с которой уже я делаю новую копию и внедряю в неё новые элементы фуцнкционала. И так дальше по очереди.
Я сейчас внедрил формулы на двух листах: ФЧПУ и ФУ. Вам предлагаю разобраться и внедрить их на остальных станках. А я тем временем займусь условным форматированием во втором файле (жёлтая и серая раскраска).Gustav
Густав, это гениально. Спасибо Вам. Есть вопрос, не могу правильно вписать в формулу в ячейке M3 на листе ФЧПУ (файл станков) условие, при котором отбор будет вестись не только по абревиатуре ФЧПУ, но и по ФЧПУ2 (так как у нас в операциях одной детали может быть и то и то и в файле станков они дублируются в очереди). Как сделать, что бы формула различала ФЧПУ и ФЧПУ2?
Густав, это гениально. Спасибо Вам. Есть вопрос, не могу правильно вписать в формулу в ячейке M3 на листе ФЧПУ (файл станков) условие, при котором отбор будет вестись не только по абревиатуре ФЧПУ, но и по ФЧПУ2 (так как у нас в операциях одной детали может быть и то и то и в файле станков они дублируются в очереди). Как сделать, что бы формула различала ФЧПУ и ФЧПУ2?gutsoff200991
[/vba] Т.е. ФЧПУ и ФЧПУ2 это будут разные очереди и, соответственно, разные листы станков? А как с ними соотносятся, например, такие операции, как ФЧПУ06.01 и ФЧПУ10.01 - их куда?
[/vba] Т.е. ФЧПУ и ФЧПУ2 это будут разные очереди и, соответственно, разные листы станков? А как с ними соотносятся, например, такие операции, как ФЧПУ06.01 и ФЧПУ10.01 - их куда?Gustav
Т.е. ФЧПУ и ФЧПУ2 это будут разные очереди и, соответственно, разные листы станков?
Эти операции (ФЧПУ и ФЧПУ2) в детали разные, но производятся на одном и том же станке. Лист станков для ФЧПУ и ФЧПУ2 один и тот же. Тоже самое с С и С2, Т и Т2.
Т.е. ФЧПУ и ФЧПУ2 это будут разные очереди и, соответственно, разные листы станков?
Эти операции (ФЧПУ и ФЧПУ2) в детали разные, но производятся на одном и том же станке. Лист станков для ФЧПУ и ФЧПУ2 один и тот же. Тоже самое с С и С2, Т и Т2.
Есть вопрос, не могу правильно вписать в формулу в ячейке M3 на листе ФЧПУ (файл станков) условие, при котором отбор будет вестись не только по абревиатуре ФЧПУ, но и по ФЧПУ2 (так как у нас в операциях одной детали может быть и то и то и в файле станков они дублируются в очереди). Как сделать, что бы формула различала ФЧПУ и ФЧПУ2?
Еще вопрос. Как сделать в формуле в этой же ячейке (М3 на листе ФЧПУ), так что бы оставить деталь у которой статус будет "Выполнено" в столбце "Очередь на станки", т.е. в том же столбце М? Знаю что говорил ранее, что детали не должны оставаться в очереди. Но возник вопрос, что если оператор станка поставит статус выполнено, а начальник смены при этом до этого не перетащил деталь из очереди на нужный станок (не успел, забыл). Получается что в этом случае деталь пропадет из истории.
Есть вопрос, не могу правильно вписать в формулу в ячейке M3 на листе ФЧПУ (файл станков) условие, при котором отбор будет вестись не только по абревиатуре ФЧПУ, но и по ФЧПУ2 (так как у нас в операциях одной детали может быть и то и то и в файле станков они дублируются в очереди). Как сделать, что бы формула различала ФЧПУ и ФЧПУ2?
Еще вопрос. Как сделать в формуле в этой же ячейке (М3 на листе ФЧПУ), так что бы оставить деталь у которой статус будет "Выполнено" в столбце "Очередь на станки", т.е. в том же столбце М? Знаю что говорил ранее, что детали не должны оставаться в очереди. Но возник вопрос, что если оператор станка поставит статус выполнено, а начальник смены при этом до этого не перетащил деталь из очереди на нужный станок (не успел, забыл). Получается что в этом случае деталь пропадет из истории.gutsoff200991
[/vba] Иначе как они будут в очереди на один и тот же станок различаться? По-хорошему, надо бы сразу называть так детали еще в первом файле, а то сложность формул очереди и УФ во втором файле возрастет в квадрате, если придётся в формуле на ходу делать динамическую сцепку названия и операции. Что думаете по этому поводу?
[/vba] Иначе как они будут в очереди на один и тот же станок различаться? По-хорошему, надо бы сразу называть так детали еще в первом файле, а то сложность формул очереди и УФ во втором файле возрастет в квадрате, если придётся в формуле на ходу делать динамическую сцепку названия и операции. Что думаете по этому поводу?Gustav
[/vba] Ну, и дополнительно надо будет удалить деталь из рабочей зоны станка, чтобы она опять отобразилась в очереди после выполнения.
Решать, конечно, Вам, но как сделано сейчас мне нравится больше. Деталь, отправляясь в рабочую зону, уходит из очереди. В рабочей зоне она может обрасти информацией в доп.колонках ("начало", "окончание" и т.д.). Когда статус становится "Выполнено", деталь меняет окрас с жёлтого на серый и остается в рабочей зоне вместе со всей доп.информацией, а также самим фактом, что она была обработана на данном конкретном станке. По мере добавления сверху новых ("жёлтых") деталей на обработку старые ("серые") смещаются вниз вместе со всеми своими значениями в доп. колонках. И вот это, получается, реальное хранение истории! А если ее опять определять в очередь, то надо предусматривать какую-то очистку доп.колонок (прямо рука не поднимается на это действие - "заполнять-заполнять, чтобы потом всё зачеркнуть")
[/vba] Ну, и дополнительно надо будет удалить деталь из рабочей зоны станка, чтобы она опять отобразилась в очереди после выполнения.
Решать, конечно, Вам, но как сделано сейчас мне нравится больше. Деталь, отправляясь в рабочую зону, уходит из очереди. В рабочей зоне она может обрасти информацией в доп.колонках ("начало", "окончание" и т.д.). Когда статус становится "Выполнено", деталь меняет окрас с жёлтого на серый и остается в рабочей зоне вместе со всей доп.информацией, а также самим фактом, что она была обработана на данном конкретном станке. По мере добавления сверху новых ("жёлтых") деталей на обработку старые ("серые") смещаются вниз вместе со всеми своими значениями в доп. колонках. И вот это, получается, реальное хранение истории! А если ее опять определять в очередь, то надо предусматривать какую-то очистку доп.колонок (прямо рука не поднимается на это действие - "заполнять-заполнять, чтобы потом всё зачеркнуть")Gustav
Еще вопрос. Прошу меня простить, так как я не глубоко понимаю схематику формул. Во втором файле (файл станков) на странице списки, во втором списке "Уникальные Детали-Операции" не верно отображается статус (нет соответствия Статус-операция). При изменении статуса, он (статус) в списке меняется на первой строке детали, а измененная операция помещается вне соответствии со статусом. Не могу понять, как это исправить.
Еще вопрос. Прошу меня простить, так как я не глубоко понимаю схематику формул. Во втором файле (файл станков) на странице списки, во втором списке "Уникальные Детали-Операции" не верно отображается статус (нет соответствия Статус-операция). При изменении статуса, он (статус) в списке меняется на первой строке детали, а измененная операция помещается вне соответствии со статусом. Не могу понять, как это исправить.gutsoff200991