|   |   | 
| 
 | Запись данных из документа в справочник | ☑ | ||
|---|---|---|---|---|
| 0
    
        VSpicy naïve 16.05.23✎ 11:42 | 
        Всем доброго дня!
 Есть документ "ПланРаботыТС" с табличной частью: Транспортное средство - (справочник "ТС"), Водитель (справочник "Сотрудники"), Телефон (строка). Есть справочник "ТС" с формой заполнения: НаименованиеТС (строка), Модель (справочник "МоделиТС"), ГосНомер (строка), Телефон (строка) и т.п. Задача: Нужно при закрытии документа "ПланРаботыТС" записывать в справочник "ТС" в поле "Телефон", все изменённые телефоны из табличной части документа "ПланРаботыТС". Подскажите пожалуйста каким образом лучше осуществить данную задачу, чтоб при закрытии документа запись в справочник была как можно быстрой, т.к. парк автомобилей порядка 1500 шт.? Заранее благодарен за ответы!!! | |||
| 1
    
        Волшебник 16.05.23✎ 11:42 | 
        Вам не нужно этого делать. Это плохая архитектура, которую надо менять.     | |||
| 2
    
        OldCondom 16.05.23✎ 11:43 | 
        В типовых смотрите регистры сведений "Адреса контрагентов" и прочее     | |||
| 3
    
        vicof 16.05.23✎ 11:45 | 
        (1) +1     | |||
| 4
    
        VSpicy naïve 16.05.23✎ 11:46 | 
        (1) Согласен, в идеале телефоны нужно записывать и редактировать в справочнике "ТС", а уже в документе "ПланРаботыТС" их отображать...
 Но вот руководство хочет иначе) | |||
| 5
    
        Мультук гуру 16.05.23✎ 11:49 | 
        (1) +1
 Но 1) Что мешает выбрать запросом из таб.части только измененные телефоны и записывать только их ? 2) У вас машины делают несколько рейсов в день ? Если нет -- то ночью запускаем регламентное, которое неспеша обновляет телефоны или Создаем регистрСведений "ДокументыПланРаботыТС_ДляОбновленияТелефонов", при проведении добавляем туда ссылку на документ Регламентное работает по этому регистру раз в n-минут | |||
| 6
    
        YFedor 16.05.23✎ 11:50 | 
        (0) А если при закрытии документа один из элементов справочника ТС открыт для редактирования, то что нужно делать в этом случае?     | |||
| 7
    
        OldCondom 16.05.23✎ 11:55 | 
        (6) писать в журнал, каждые 10 минут его обходить и пытаться снова, так до 3 раз. 
 Я такое видел... | |||
| 8
    
        VSpicy naïve 16.05.23✎ 11:56 | 
        Делал такой вариант, работает, но запись происходит 25-30 сек.
 &НаСервере Процедура ЗаписатьТелефонНаСервере(ПарамТС, ПарамТелефон) СпрТС = Справочники.ТС.НайтиПоНаименованию(ПарамТС).Ссылка.ПолучитьОбъект(); СпрТС.Телефон = ПарамТелефон; Попытка СпрТС.Записать(); Исключение Сообщить("Не удалось записать!"); КонецПопытки; КонецПроцедуры &НаКлиенте Процедура ЗаписатьТелефон(Команда) Для Каждого ТекСтрока Из Объект.ПланТС Цикл ЗаписатьТелефонНаСервере(ТекСтрока.НаименованиеТС, ТекСтрока.Телефон); КонецЦикла; Сообщить("Телефон записан в справочник - ТС!"); КонецПроцедуры | |||
| 9
    
        АНДР 16.05.23✎ 12:00 | 
        СпрТС = Справочники.ТС.НайтиПоНаименованию(ПарамТС).Ссылка.ПолучитьОбъект(); - Это 5!     | |||
| 10
    
        VSpicy naïve 16.05.23✎ 12:02 | 
        (5) Рейсы могут быть как разовые, так и несколько раз в сутки.
 Я кстати тоже задумался о Регистре сведений. | |||
| 11
    
        VSpicy naïve 16.05.23✎ 12:03 | 
        (6) Вопрос конечно интересный, но скорее всего с этим не будет проблем, т.к. справочником пользуются крайне редко.     | |||
| 12
    
        АНДР 16.05.23✎ 12:05 | 
        (10) Передавай на сервер массив ссылок на ТС и Телефоны. При заполнении формы желательно (будет медленно работать в процессе заполнения, но не будет пиковой нагрузки при записи) иметь признак изменения номера телефона.     | |||
| 13
    
        Мультук гуру 16.05.23✎ 12:09 | 
        (8) 
 В данном случае таки есть разница между &НаСервере и &НаСервереБезКонтекста P.S. В остальном: Беда-печаль-огорчение (с) | |||
| 14
    
        VSpicy naïve 16.05.23✎ 12:12 | 
        (13) Интересно в чём?     | |||
| 15
    
        VSpicy naïve 16.05.23✎ 12:14 | 
        (14) Чуть быстрее будет, т.к. исключаем обращение к форме...     | |||
| 16
    
        Мультук гуру 16.05.23✎ 12:29 | 
        (15) 
 Почему бы: 1) Делать всё это где-нибудь в "ПослеЗаписиНаСервере" (например) Все данные уже на сервере, никуда ходить на надо. 2) тз = Объект.ПланТС.Выгрузить(); Далее пишем запрос а) засовываем туда тз, делаем соединение со справочником по НаименованиеТС, модельТС (вам виднее) Делаем отбор, что телефон в справочнике <> телефон в тз Дальше выборка и в цикле по выборке СпрТС = выборка.Ссылка.ПолучитьОбъект(); СпрТС.Телефон = ПарамТелефон; СпрТС.Записать(); P.S. Будет веселуха, если кто-нибудь перепроведет документ за 2020 год и обновит все телефоны. Вот операторы рады будут. | |||
| 17
    
        VSpicy naïve 16.05.23✎ 12:46 | 
        (16) Спасибо за отличный вариант, можно будет реализовать...
 P.S. Не будет) т.к. запрет на изменение документов в закрытом периоде. | |||
| 18
    
        Волшебник 16.05.23✎ 13:05 | 
        (17) Вы не обратили внимание на пункт "веселуха"     | |||
| 19
    
        Волшебник 16.05.23✎ 13:06 | 
        (17) Все Ваши "запреты" обходятся с помощью Загрузка = Истина или простой сменой даты запрета     | |||
| 20
    
        Злопчинский 16.05.23✎ 13:30 | 
        Правильно написано в (1). У ТС - нет телефона. Телефон - это параметр сделки-рейса с использованием этого ТС.
 Соответственно, чтобы получать актуальные телефоны (например), надо работать не со справочником ТС, а (условно) с регистром "незакрытые рейсы". | |||
| 21
    
        VSpicy naïve 16.05.23✎ 14:35 | 
        (19) У нас хакеров нет)     | |||
| 22
    
        Волшебник 16.05.23✎ 14:36 | 
        (21) А есть дураки?     | |||
| 23
    
        VSpicy naïve 16.05.23✎ 14:51 | 
        (22) Где их только нет...     | |||
| 24
    
        Волшебник 16.05.23✎ 14:53 | 
        (23) При Вашей архитектуре найдётся дурак, который проведёт вчерашний документ. Телефон в справочнике будет переписан. Потом другой дурак проведёт сегодняшний документ. Телефон опять будет переписан. Так и будете выяснять, какой дурак был последним.     | |||
| 25
    
        KJlag 16.05.23✎ 15:10 | 
        (24) если им уж настооолько нужен этот подход (хз зачем), тогда можно сравнивать перед записью таблицы в объекте и в ссылке (если объект не новый). и работать только с измененными.     | |||
| 26
    
        VSpicy naïve 16.05.23✎ 15:10 | 
        (24) Это всё понятно, руководство не всегда прислушивается к рекомендациям IT.
 Хотя можно конечно эту задачу выполнить иначе, учитывая их пожелания и предусмотреть вышеуказанные нюансы. В любом случае спасибо за предостережения! | |||
| 27
    
        Волшебник 16.05.23✎ 15:15 | 
        (26) Если руководство скажет прыгать с крыши, Вы прыгнете? Заведите промежуточный регистр сведений. Не пишите в справочник при проведении документов.     | |||
| 28
    
        VSpicy naïve 16.05.23✎ 15:29 | 
        (27)Короче с этим вопросом всё ясно! Спасибо! Совместно с регистром сведений и будет сделано...     | |||
| 29
    
        Мимохожий Однако 16.05.23✎ 15:31 | 
        (26) Назови регистр сведений"Справочник ТС" и пусть куроводство радуется.     | |||
| 30
    
        mikecool 16.05.23✎ 17:05 | 
        (28) наймите архитектора, чтобы грамотно структуру продумывал, и РП, чтобы руководство ставил на место     | |||
| 31
    
        VSpicy naïve 16.05.23✎ 20:56 | 
        (30) Хорошая идея)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |