|   |   | 
| 
 | Зачем 1С выносит проведение документов в общий модуль? | ☑ | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0
    
        Aswed 23.07.13✎ 12:40 | 
 
        САБЖ     | ||||||||||
| 1
    
        ДенисЧ 23.07.13✎ 12:41 | 
        Чтобы общие функции использовать и не дублировать код     | ||||||||||
| 2
    
        Aswed 23.07.13✎ 12:46 | 
        (1) Так проведение документа для каждого дока со своими движениями.
  А общие функции и так модно дергать в модуле проведения дока. | ||||||||||
| 3
    
        Нуф-Нуф 23.07.13✎ 12:47 | 
        потому что.     | ||||||||||
| 4
    
        ДенисЧ 23.07.13✎ 12:48 | 
        (2) Привелигированные модули и выполнение на сервере.     | ||||||||||
| 5
    
        shuhard 23.07.13✎ 12:48 | 
        (0) зачем ТС выносит себе мозг бессмысленными вопросами ?     | ||||||||||
| 6
    
        Живой Ископаемый 23.07.13✎ 12:49 | 
        2(2) Чтобы когда дело дойдет до изменений алгоритма, то делать это в одном месте, а не в десяти.     | ||||||||||
| 7
    
        ДенисЧ 23.07.13✎ 12:49 | 
        (5) Осталось понять, если там что выносить? :-)     | ||||||||||
| 8
    
        Aswed 23.07.13✎ 12:50 | 
        (3) Да я док создаю просто, вот думаю писать как обычно в модуле дока или сделать всё "по модному"))))
  (4) А привилегированные это да. Но вот смотрю УТ 11, и там модули не фига не привилигированные. Остаётся только выполнение на сервере. | ||||||||||
| 9
    
        Aswed 23.07.13✎ 12:50 | 
        (7) ))))))))))
  офтоп))))))))) | ||||||||||
| 10
    
        Aswed 23.07.13✎ 12:51 | 
        (6) Думал об этом, но по факту что так что так все равно для каждого дока своя процедура проведения.     | ||||||||||
| 11
    
        Mitriy 23.07.13✎ 12:52 | 
        (8) а в управляемом приложении проведение по-любому на сервере...     | ||||||||||
| 12
    
        Mitriy 23.07.13✎ 12:52 | 
        атавизм, наверное...     | ||||||||||
| 13
    
        MSII 23.07.13✎ 12:54 | 
        (10) Это не отменяет наличие общего для этих процедур кода, который целесообразно вынести в общие модули.     | ||||||||||
| 14
    
        Aswed 23.07.13✎ 12:54 | 
        (11) А кстати да. 
  На УФ это не плюс. | ||||||||||
| 15
    
        Живой Ископаемый 23.07.13✎ 13:03 | 
        2(10) ну круто. а что если завтра будет два документа. а процедура по-прежнему одна.     | ||||||||||
| 16
    
        Ненавижу 1С гуру 23.07.13✎ 13:05 | 
        потому что 1С не осиливает пока полиморфизм     | ||||||||||
| 17
    
        Сияющий Асинхраль 23.07.13✎ 13:06 | 
        Честно сказать никогда такой подход не нравился :-(, потому что вместо пары тысяч строк кода в конкретном доке приходится изучать от десяти тысяч в общих модулях :-(. К тому же всегда помнить надо, что правка в общем модуле может неожиданно вылезти еще в паре-тройке сторонних документов, а в конкретном документе поправил и всегда уверен, что в других доках это не вылезет...     | ||||||||||
| 18
    
        Живой Ископаемый 23.07.13✎ 13:10 | 
        2(17) ну это только у тех, кто не освоил условных операторов     | ||||||||||
| 19
    
        z80a 23.07.13✎ 13:11 | 
        (0) Этот кретинский подход тянется еще с 7ки..
  Забить и сделать нормально - проведение должно быть в модуле документа. | ||||||||||
| 20
    
        acsent 23.07.13✎ 13:14 | 
        Опять поменялась концепция просто. Вот выйдет бсп 2.2 и снова концепция поменяетяется     | ||||||||||
| 21
    
        Starhan 23.07.13✎ 13:15 | 
        (17) а ты условие на тип документа пиши для перестраховки :)     | ||||||||||
| 22
    
        Wist 23.07.13✎ 13:15 | 
        (19) на днях ЗиК обновлял... 100+ тысяч строк в глобальнике     | ||||||||||
| 23
    
        Живой Ископаемый 23.07.13✎ 13:16 | 
        2(22) в 8-ке много глобальников     | ||||||||||
| 24
    
        acsent 23.07.13✎ 13:18 | 
        правки лучше подписками делать     | ||||||||||
| 25
    
        Сияющий Асинхраль 23.07.13✎ 13:18 | 
        (18) Ну, значит за десять лет работы с 1С я так их и не освоил :-(, уже и собственную конфу написал, но вариант искать модуль проведения в конкретном текущем документе мне импонирует гораздо больше чем развлекаться с разбором многотысячных нагромождений строк с многочисленными Если...     | ||||||||||
| 26
    
        Wist 23.07.13✎ 13:22 | 
        (23) не может быть :)
  (25) +1 | ||||||||||
| 27
    
        Gatalik 23.07.13✎ 13:23 | 
        Функция СформироватьЗапросПоТабличнойЧасти(ДокументОбъект, ИмяТабличнойЧасти, СтруктураПолей,
  СтруктураСложныхПолей = Неопределено) Экспорт ТекстЗапроса = ""; ДокументМетаданные = ДокументОбъект.Метаданные(); Для Каждого Реквизит Из СтруктураПолей Цикл ТекстЗапроса = ТекстЗапроса + ", |Док." + Реквизит.Значение + " КАК " + СокрЛП(Реквизит.Ключ); КонецЦикла; ТекстСоединение=""; Запрос = Новый Запрос; Если ТипЗнч(СтруктураСложныхПолей) = Тип("Структура") Тогда // Добавим к запросу конструкции. Для Каждого Элемент Из СтруктураСложныхПолей Цикл ТекстЗапроса = ТекстЗапроса + ", | " + Элемент.Значение + " КАК " + СокрЛП(Элемент.Ключ); КонецЦикла; Если СтруктураСложныхПолей.Свойство("Проект") Тогда ТекстСоединение=" |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УстановкаПроектовДляНоменклатуры.СрезПоследних(&ДатаДок, НоменклатураПроекта В (ВЫБРАТЬ Номенклатура ИЗ Документ." + ДокументМетаданные.Имя + "."+ СокрЛП(ИмяТабличнойЧасти) + " ГДЕ Ссылка = &ДокументСсылка)) КАК ПроектыНоменклатуры |ПО Док.Номенклатура=ПроектыНоменклатуры.НоменклатураПроекта"; Запрос.УстановитьПараметр("ДатаДок",ДокументОбъект.Дата); КонецЕсли; КонецЕсли; Запрос.Текст = "ВЫБРАТЬ | Док.НомерСтроки " + ТекстЗапроса + " | ИЗ | Документ." + ДокументМетаданные.Имя + "."+ СокрЛП(ИмяТабличнойЧасти) + " КАК Док"+ТекстСоединение+" | ГДЕ Док.Ссылка = &ДокументСсылка | УПОРЯДОЧИТЬ ПО | Док.НомерСтроки"; // Установим параметры запроса. Запрос.УстановитьПараметр("ДокументСсылка" , ДокументОбъект.Ссылка); Если ДокументОбъект[ИмяТабличнойЧасти].Количество() = 0 Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "ГДЕ Док.Ссылка = &ДокументСсылка", "ГДЕ ЛОЖЬ"); КонецЕсли; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросПоТабличнойЧасти() С такой штукой вчера столкнулся, мало того что в общем модуле, дак еще текст запроса собирается непонятно как, попробуй потом в консоле потестить))) | ||||||||||
| 28
    
        fisher 23.07.13✎ 13:25 | 
        (25) +1
  (27) Это как раз удобная штука, хотя можно было и более универсально реализовать. Один раз разбираешься и потом спокойно пользуешься. | ||||||||||
| 29
    
        acsent 23.07.13✎ 13:25 | 
        (27) и что тут сложного? Работает - не трожь!     | ||||||||||
| 30
    
        Ахиллес 23.07.13✎ 13:27 | 
        (0) Потамушто одинэсник это вершина эволюции человека. Доказательство: http://www.rbcdaily.ru/cnews/562949987751712
  Другим людям ещё только предстоит развиться до состояния одинэсников. | ||||||||||
| 31
    
        ОбычныйЧеловек 23.07.13✎ 13:28 | 
        (0) Потому как это правильно (имхо) ибо модуль проведения по хорошему должен быть универсальным (на кой черт одно и тоже городить в каждом модуле документа?!) 
  (17) Любой подход можно испоганить (можно и миллион строк кода написать а можно всего пару тысяч) | ||||||||||
| 32
    
        Ахиллес 23.07.13✎ 13:28 | 
        Совершенный человек пишет совершенный код. Раз так написано с типовой, значит это правильно.     | ||||||||||
| 33
    
        fisher 23.07.13✎ 13:28 | 
        (27) В общих модулях целая подборка подобной байды, которая почти в любых доках используется. Суть в том, чтобы сразу получить всю необходимую для проведения информацию минимальным количеством запросов и по возможности единообразно. И больше БД при проведении не дергать.     | ||||||||||
| 34
    
        Господин ПЖ 23.07.13✎ 13:29 | 
        особо доставляет прибитые намертво имена табличных частей и прочие приколы...     | ||||||||||
| 35
    
        wade25 23.07.13✎ 13:29 | 
        (27) Считай, что это защита от дурака. Если не поймет, не тронет.     | ||||||||||
| 36
    
        Ахиллес 23.07.13✎ 13:31 | 
        (31) Ты их хоть когда нибудь читал? 
  Если это расходная накладная... Иначе если это приходная Иначе если это списание Иначе если... нахрена тут это всё? Ну вынеси этот код в сам документ, нахрен эти лестницы в одном модуле? | ||||||||||
| 37
    
        Ахиллес 23.07.13✎ 13:33 | 
        Причем внутри Если код существенно разный.     | ||||||||||
| 38
    
        Господин ПЖ 23.07.13✎ 13:34 | 
        (36)  чтобы отладка и кастомизация этого дерьма приносила "радость и удовольствие"...     | ||||||||||
| 39
    
        ОбычныйЧеловек 23.07.13✎ 13:37 | 
        (36) Я их пишу  - так, что знаю о чем говорю. Универсальный модуль проведения по регистрам бухгалтерии (который "рисует" проводки по любому документу) - занимает чуть больше тысячи строк.     | ||||||||||
| 40
    
        ОбычныйЧеловек 23.07.13✎ 13:38 | 
        +39 И никаких Если ИначеЕсли - там нет.     | ||||||||||
| 41
    
        Kyon8 23.07.13✎ 14:05 | 
        (39) Угадаю - на вход этому Универсальному модулю нужно подать заполненную ТЗ проводок :)     | ||||||||||
| 42
    
        Wist 23.07.13✎ 14:10 | 
        Каждому коду свое место, а общие моменты реализовывать через подписки.     | ||||||||||
| 43
    
        Ахиллес 23.07.13✎ 14:14 | 
        (40) Вот не надо тут физдить. Или ты надеешься, что тя никто не проверит?
  Найдено за 15 сек. Просто первое попавшееся. Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.АвансовыйОтчет") Тогда ОтразитьВУСН(ДокументСсылка, "Оплата", СтруктураШапкиДокумента,1); ОтразитьВУСН(ДокументСсылка, "Поступление", СтруктураШапкиДокумента,2); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.АккредитивПереданный") ИЛИ //~ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.АккредитивПолученный") ИЛИ //~ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ИнкассовоеПоручениеПереданное") ИЛИ //~ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ИнкассовоеПоручениеПолученное") ИЛИ //~ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПлатежноеТребованиеВыставленное") ИЛИ //~ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПлатежноеТребованиеПолученное") ИЛИ //~ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПлатежноеПоручениеВходящее") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПлатежноеПоручениеИсходящее") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПлатежныйОрдерПоступлениеДенежныхСредств") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПлатежныйОрдерСписаниеДенежныхСредств") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.РасходныйКассовыйОрдер") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПоступлениеДенежныхДокументов") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ВыдачаДенежныхДокументов") Тогда ОтразитьВУСН(ДокументСсылка, ,СтруктураШапкиДокумента); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.АктОбОказанииПроизводственныхУслуг") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПередачаНМА") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.РеализацияУслугПоПереработке") Тогда ОтразитьВУСН(ДокументСсылка, "РеализацияУслуг", СтруктураШапкиДокумента); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПередачаОС") Тогда Если НЕ ДокументСсылка.ПравоСобственностиПереходитПослеГосРегистрации Тогда ОтразитьВУСН(ДокументСсылка, "РеализацияУслуг", СтруктураШапкиДокумента); КонецЕсли; //~// ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ОтчетКомитентуОПродажах") Тогда Если УправлениеЗапасами.ИспользуетсяРасширеннаяАналитикаУчета(СтруктураШапкиДокумента.Дата) Тогда ОтразитьВУСН(ДокументСсылка, "Поступление", СтруктураШапкиДокумента, 0); ОтразитьВУСН(ДокументСсылка, "РеализацияУслуг", СтруктураШапкиДокумента, 1); Иначе ОтразитьВУСН(ДокументСсылка, "РеализацияУслуг", СтруктураШапкиДокумента); КонецЕсли; ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ВозвратПереданныхТоваров") Тогда Если ДокументСсылка.ВидОперации = Перечисления.ВидыОперацийВозвратТоваровПоставщику.ИзПереработки Тогда ОтразитьВУСН(ДокументСсылка, "ВозвратИзПереработки", СтруктураШапкиДокумента); КонецЕсли; //~\\ ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ВозвратТоваровОтПокупателя") Тогда Если ДокументСсылка.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда ОтразитьВУСН(ДокументСсылка, "ВозвратСРеализации", СтруктураШапкиДокумента); Иначе ОтразитьВУСН(ДокументСсылка, "ВозвратОтПокупателя", СтруктураШапкиДокумента, 1); КонецЕсли; ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ВозвратТоваровПоставщикуИзНТТ") ИЛИ //~ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ВозвратТоваровПоставщику") Тогда Если ДокументСсылка.Товары.Количество() > 0 Тогда ОтразитьВУСН(ДокументСсылка, "ВозвратПоставщику", СтруктураШапкиДокумента); КонецЕсли; ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ОтражениеЗарплатыВРеглУчете") Тогда ОтразитьВУСН(ДокументСсылка, "НачислениеЗП", СтруктураШапкиДокумента); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ОтчетКомиссионераОПродажах") Тогда Если НЕ ДокументСсылка.УдержатьКомиссионноеВознаграждение Тогда ОтразитьВУСН(ДокументСсылка, "УслугаКомиссионера", СтруктураШапкиДокумента,0); ОтразитьВУСН(ДокументСсылка, "РеализацияКомиссионером", СтруктураШапкиДокумента,1); Иначе ОтразитьВУСН(ДокументСсылка, "ЗачетВознагражденияКомиссионера", СтруктураШапкиДокумента,0); Отказ = Ложь; УчетнаяПолитика = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(СтруктураШапкиДокумента.Дата, Отказ, СтруктураШапкиДокумента.Организация, "Нал"); ВыделятьНДСУСН = ?(Отказ, Истина, УчетнаяПолитика.ПорядокПризнанияРасходовПоНДС = Перечисления.ПорядокПризнанияРасходовПоНДС.ПоОплатеПоставщику); Если ВыделятьНДСУСН Тогда ОтразитьВУСН(ДокументСсылка, "ЗачетВознагражденияКомиссионераНДС", СтруктураШапкиДокумента,1); ОтразитьВУСН(ДокументСсылка, "РеализацияКомиссионером", СтруктураШапкиДокумента,2); Иначе ОтразитьВУСН(ДокументСсылка, "РеализацияКомиссионером", СтруктураШапкиДокумента,1); КонецЕсли; КонецЕсли; ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.РеализацияОтгруженныхТоваров") Тогда ОтразитьВУСН(ДокументСсылка, "РеализацияКомиссионером", СтруктураШапкиДокумента,1); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ОтчетОРозничныхПродажах") Тогда ОтразитьВУСН(ДокументСсылка, "Розница", СтруктураШапкиДокумента); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПередачаТоваров") Тогда Если НЕ ДокументСсылка.ВидОперации = Перечисления.ВидыОперацийПередачаТоваров.ИзПереработки Тогда ОтразитьВУСН(ДокументСсылка, "ВПереработку", СтруктураШапкиДокумента); КонецЕсли; ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПолучениеУслугПоПереработке") Тогда //ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПоступлениеИзПереработки") Тогда // БП ОтразитьВУСН(ДокументСсылка, "УслугаПоПереработке", СтруктураШапкиДокумента); ОтразитьВУСН(ДокументСсылка, "ИзПереработки", СтруктураШапкиДокумента , 1); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПоступлениеДопРасходов") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПоступлениеНМА") Тогда ОтразитьВУСН(ДокументСсылка, "Поступление", СтруктураШапкиДокумента); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда Если (ДокументСсылка.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком) И ДокументСсылка.ВидОперации <> Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ВПереработку Тогда ОтразитьВУСН(ДокументСсылка, "Поступление", СтруктураШапкиДокумента); КонецЕсли; //~// ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПоступлениеТоваровУслугВНТТ") Тогда Если ДокументСсылка.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком И ДокументСсылка.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслугВНТТ.ОтПоставщика Тогда ОтразитьВУСН(ДокументСсылка, "Поступление", СтруктураШапкиДокумента); КонецЕсли; //~\\ ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда Если ДокументСсылка.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем И (НЕ ДокументСсылка.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности) Тогда ОтразитьВУСН(ДокументСсылка, "Реализация", СтруктураШапкиДокумента); Иначе ОтразитьВУСН(ДокументСсылка, "НаРеализацию", СтруктураШапкиДокумента); КонецЕсли; ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.СписаниеТоваров") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПередачаМатериаловВЭксплуатацию") ИЛИ ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ТребованиеНакладная") Тогда ОтразитьВУСН(ДокументСсылка, "Списание", СтруктураШапкиДокумента); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда ОтразитьВУСН(ДокументСсылка, "Перемещение", СтруктураШапкиДокумента); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.КомплектацияНоменклатуры") Тогда ОтразитьВУСН(ДокументСсылка, "Комплектация", СтруктураШапкиДокумента); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.КорректировкаДолга") Тогда Если ДокументСсылка.ВидОперации = Перечисления.ВидыОперацийКорректировкаДолга.ПереносЗадолженности Тогда ОтразитьВУСН(ДокументСсылка, "ПереносЗадолженности", СтруктураШапкиДокумента); ИначеЕсли ДокументСсылка.ВидОперации = Перечисления.ВидыОперацийКорректировкаДолга.ПроведениеВзаимозачета Тогда ОтразитьВУСН(ДокументСсылка, "ПроведениеВзаимозачетаДебитор", СтруктураШапкиДокумента,0); ОтразитьВУСН(ДокументСсылка, "ПроведениеВзаимозачетаКредитор", СтруктураШапкиДокумента,1); ИначеЕсли ДокументСсылка.ВидОперации = Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности Тогда ОтразитьВУСН(ДокументСсылка, "СписаниеДебиторскойЗадолженности", СтруктураШапкиДокумента,0); ОтразитьВУСН(ДокументСсылка, "СписаниеКредиторскойЗадолженности", СтруктураШапкиДокумента,1); КонецЕсли; //~// ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.РасчетСебестоимостиВыпуска") Тогда ОтразитьВУСН(ДокументСсылка, "Выпуск", СтруктураШапкиДокумента); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ОплатаОтПокупателяПлатежнойКартой") Тогда ОтразитьВУСН(ДокументСсылка, "ПереносЗадолженности", СтруктураШапкиДокумента); //~\\ КонецЕсли; | ||||||||||
| 44
    
        Господин ПЖ 23.07.13✎ 14:18 | 
        >Каждому коду свое место, а общие моменты реализовывать через подписки.
  неизвестно когда какая подписка сработает, а это иногда важно | ||||||||||
| 45
    
        ОбычныйЧеловек 23.07.13✎ 14:19 | 
        (41) На входе настройка (что\откуда\зачем\когда берется) - утрировано можно конечно сказать что это "ТЗ проводок"
  (43) Речь шла о том - стоит ли выносить проведение в общий модуль - то, что у 1С пока код в таком виде (который ты привел) не означает, что замысел плохой. У меня лично такого кода нет. | ||||||||||
| 46
    
        timurhv 23.07.13✎ 14:22 | 
        (0) Да ... с общими модулями - постоянное форматирование кода раздражает порой (пробелы заменяются на табуляции и тп), не могут сразу по-человечески сделать?! :)     | ||||||||||
| 47
    
        Ахиллес 23.07.13✎ 14:22 | 
        (45) Процедуры записи в регистр имхо только. То есть код, который для всех документов одинаковый. 
  А такие лестницы, как в (43) это человека кто то обидел. Может в метро на ногу наступили и он мстит. | ||||||||||
| 48
    
        ОбычныйЧеловек 23.07.13✎ 14:25 | 
        (47) С этим я согласен.     | ||||||||||
| 49
    
        Aswed модератор 23.07.13✎ 15:19 | 
        Добавил голосовалку.
  ИМХО может и даёт некую универсальность, что в принципе сомнительно, но отлаживать и править потом это значительно труднее чем в одном модуле документа. Выносить проведение в бщий модуль Плохо | ||||||||||
| 50
    
        kuromanlich 23.07.13✎ 15:28 | 
        (49) если грамотно сделать, то допустим партионный учет можно для всех документов править в одном модуле. все заввисит от исполнения и квалификации того, кто пытается потом править     | ||||||||||
| 51
    
        ОбычныйЧеловек 23.07.13✎ 15:37 | 
        (49) С точки зрения кодера которому нужно раз в год подправить\дописать проведение одного документа - искать где\что\как править в общем модуле наверно действительно трудно. Но если ты разрабатываешь конфу (видишь так сказать ее целиком - как одно единое целое) - писАть примерно одно и тоже в каждый модуль документа мягко говоря "не айс".     Выносить проведение в бщий модуль Хорошо | ||||||||||
| 52
    
        z80a 23.07.13✎ 15:40 | 
        Выносить проведение в бщий модуль ТУПО     Выносить проведение в бщий модуль Плохо | ||||||||||
| 53
    
        Ахиллес 23.07.13✎ 15:44 | 
        (51) В том то и дело, что в общий модуль выносятся процедуры для конкретных видов документов, а не обще для всех документов куски кода. Общих для всех документов кусков кода вообще не так много, а сейчас в общих модулях каша из того что там быть должно и того чего не должно. Никакой системы не наблюдается.
  Поэтому Выносить проведение в бщий модуль Плохо | ||||||||||
| 54
    
        Wist 23.07.13✎ 15:45 | 
        Как уже говорил, общий модуль не для описания уникальных движений, которыми является проведение документа     Выносить проведение в бщий модуль Плохо | ||||||||||
| 55
    
        ОбычныйЧеловек 23.07.13✎ 15:53 | 
        (53) Ты смотришь на реализация в типовых конфигурациях... Возможно там и реализовано из рук вон плохо, но это не значит, что нельзя реализовать хорошо.
  (54) Не всегда движения являются уникальными...Взять к примеру модуль проведения по партиям - кто нить хочет его в каждый документ вписать? (списание,реализация,требование-накладная и т.д.) | ||||||||||
| 56
    
        Aswed 23.07.13✎ 16:57 | 
        (55) Ну пока кроме типовых я подобного слава богу нигде не видел.
  В самом документе формируют таблицу движений, затем отправляют в общий модуль и тупо там её запихивают в движения. Потом возвращают обратно в док, потом из дока опять отправляют на сервер и выполняют движения там. ИМХО дебилизм какой то. | ||||||||||
| 57
    
        Поросенок Петр 23.07.13✎ 17:13 | 
        Тупые 1Сники запутались в трех березах. Конечно плохо выносить в общий модуль, когда на собвстенном опыте имеешь 2-3 документа с тремя регистрами, а правка типовых заканчивается на отчетах да выгрузках и загрузках.
  Я бы с удовольствием посмотрел в УПП как движуха по взаиморасчетам дублируется во всех 31 документах. Выносить проведение в бщий модуль Хорошо | ||||||||||
| 58
    
        ДенисЧ 23.07.13✎ 17:15 | 
        (57) Ладно взаиморасчёты... А если РАУЗ? :-)     | ||||||||||
| 59
    
        CepeLLlka 23.07.13✎ 17:18 | 
        Я против... Мне кажется если величина конфигурации увеличится на 10%, а лёгкость понимания и правки облегчится на 50%, то это уже плюс..     Выносить проведение в бщий модуль Плохо | ||||||||||
| 60
    
        Jolly Roger 23.07.13✎ 17:23 | 
        им думать некогда - они бабки зарабатывают...     Выносить проведение в бщий модуль Плохо | ||||||||||
| 61
    
        Jolly Roger 23.07.13✎ 17:24 | 
        (57) а в чем проблема сделать модель взаиморасчетов и обращаться к ней из любого документа?..     | ||||||||||
| 62
    
        Поросенок Петр 23.07.13✎ 17:29 | 
        (61) Модель? Какая нах модель?     | ||||||||||
| 63
    
        Кокос 23.07.13✎ 17:32 | 
        Помню УТ10.3.3.3 почти всё было в модулях объектов.. все быстро и классно настроил. а через 2 года сунулся еле разобрался с этими общими модулями. С другой стороны воспитывает не делать ченжи в типовых вещах а нужные вещи делать надстройками.     Выносить проведение в бщий модуль Плохо | ||||||||||
| 64
    
        Jolly Roger 23.07.13✎ 17:34 | 
        (62) во, такие деятели и пишут типовые...     | ||||||||||
| 65
    
        ОбычныйЧеловек 23.07.13✎ 17:36 | 
        (64) можно все таки услышать о модели?     | ||||||||||
| 66
    
        Reaper_1c 23.07.13✎ 17:36 | 
        Хорошо следовать корпоративному стандарту. У 1С есть собственная технология построения алгоритмов проведения, разработчики ей следуют - это хорошо.     Свое | ||||||||||
| 67
    
        Jolly Roger 23.07.13✎ 17:37 | 
        (65) о программной модели чего-либо? ну покурите википедию, что ли...     | ||||||||||
| 68
    
        Лефмихалыч модератор 23.07.13✎ 17:38 | 
        (0) это правильно
  1. Исключение дублирования кода 2. Меньше объектов захватывать в хранилище для изменения (61) о какой модели речь? Выносить проведение в бщий модуль Хорошо | ||||||||||
| 69
    
        Лефмихалыч модератор 23.07.13✎ 17:38 | 
        (67) давай уже или конкретику или одно из двух     | ||||||||||
| 70
    
        ОбычныйЧеловек 23.07.13✎ 17:40 | 
        (67) при всем моем к тебе уважение - это называется "слился".     | ||||||||||
| 71
    
        Jolly Roger 23.07.13✎ 17:41 | 
        (70) благодарю, конечно, за аванс, но честно, не ожидал что это будет воспринято с таким удивлением...     | ||||||||||
| 72
    
        Jolly Roger 23.07.13✎ 17:42 | 
        (69) можешь отсюда начать: wiki:MVC     | ||||||||||
| 73
    
        Лефмихалыч модератор 23.07.13✎ 17:43 | 
        (72) ага... а теперь расскажи, как это к 1С теоретически прикрутить (элементарный пример в виде cf утер бы мне нос да и всем в этой ветке заодно)     | ||||||||||
| 74
    
        Aleksey 23.07.13✎ 17:44 | 
        (66) Плохо когда эти стандарты меняются от релиза к релизу (не факт что улучшаются, просто меняются). И то что вчера было стандарт, сегодня уже моветон и "за такое в приличном обществе могут и в морду дать"     | ||||||||||
| 75
    
        Jolly Roger 23.07.13✎ 17:44 | 
        (73) это уже заденьги...     | ||||||||||
| 76
    
        Aleksey 23.07.13✎ 17:44 | 
        (75) слив №2?     | ||||||||||
| 77
    
        Jolly Roger 23.07.13✎ 17:45 | 
        (76) толсто, Леша...     | ||||||||||
| 78
    
        DJ Anthon 23.07.13✎ 17:57 | 
        не знаю, хорошо это или плохо, но то, что проведение в одном месте - мне нравится. иногда очень нужен общий вызов для всех процедур проведения какой-нибудь функции, желательно с отменой дальнейших действий, но в 8ке пока не пригождалось. хотя, наверное, с отладкой будут кое-какие проблемы     | ||||||||||
| 79
    
        Икогнито 23.07.13✎ 17:59 | 
        (0) Это понравилось программе моделирования БазыДанных и она предложила такой вариант     Выносить проведение в бщий модуль Хорошо | ||||||||||
| 80
    
        vmv 23.07.13✎ 18:02 | 
        модуль менеджера надо юзать
  а технология УПП его еще не знала когда-то, посему в общаках свалены тонны условного кода. что касается выноса в общаки общих алгоритмов проведения документов на Управляемом приложении, то там должны быть именно общие практически БЕЗУСЛОВНЫЕ алгоритмы. Мне всегда хочеться найти разработчиков, которые генерят тексты запросов в общих модулях шаблонами кода без возможности открыть их запросами. Найти и оскопить, ес-но) | ||||||||||
| 81
    
        shuhard 23.07.13✎ 18:04 | 
        (0) тупейший топик ни о чем     Свое | ||||||||||
| 82
    
        Поросенок Петр 23.07.13✎ 18:06 | 
        Короче, чтобы документ при проведении не вызывал модуль, надо чтобы он вызывал модель. Вполне здраво на фоне всей ветки.     | ||||||||||
| 83
    
        IamAlexy 23.07.13✎ 18:08 | 
        я тоже выношу. 
  и проводки пишу подпиской. а модуль закрываю ключиком. нет ключика - нет движений. Выносить проведение в бщий модуль Хорошо | ||||||||||
| 84
    
        Лефмихалыч 23.07.13✎ 18:35 | 
        (75) слив засчитан     | ||||||||||
| 85
    
        Полотенчик 23.07.13✎ 18:48 | 
        (68) Ага, захватишь один общий модуль и все другие кодеры курят...     | ||||||||||
| 86
    
        EvgeniuXP 23.07.13✎ 18:48 | 
        (15) в обще-то когда надо, тогда и делают. 1С-овцы же делают справочник или регистр туда заносят все, потом обратно возвращают, потом снова :)     | ||||||||||
| 87
    
        Aswed 23.07.13✎ 18:54 | 
        (79) Оппа.
  А про это можно поподробнее? Интересно. | ||||||||||
| 88
    
        szhukov 23.07.13✎ 18:55 | 
        Аналог проведения в общем модуле всего:
  Class Человеки Производный Class ЧеловекиСКлювом Производный Class Человеки1С Внешняя функция хз в каком модуле: function УбитьВсехЧеловеков(Человеки Чел) { Если Чел = Человеки Тогда ОторватьГолову; ИначеЕсли Чел = ЧеловеиСКлювом ОторватьКлюв; ИначеЕсли Чел = Человеки1С Тогда ЗабратьЖКК; Иначе СжечьНапалмом КонецЕсли } А можно ведь просто было написать: Чел.Убить(); ИМХО Выносить проведение в бщий модуль Плохо | ||||||||||
| 89
    
        Aswed 23.07.13✎ 18:59 | 
        (88) )))))))))))
  супер пример))))))))))))) | ||||||||||
| 90
    
        Serginio1 23.07.13✎ 19:01 | 
        (0) Проведение это плохо, а получение ТаблицыЗначений для загрузки в набор Записей это самое то. Получив на входе подготовленные данные. При этом можно этот набор записывать и из вне модуля документа, установив отбор по регистратору.     | ||||||||||
| 91
    
        IamAlexy 23.07.13✎ 19:02 | 
        (88) просто когда появится новая деректива - "помучать"
  то тебе достаточно будет внести в функцию изменения function УбитьВсехЧеловеков(Человеки Чел) { ПричинитьНевыносимыеСтрадания(); Если Чел = Человеки Тогда ОторватьГолову; ИначеЕсли Чел = ЧеловеиСКлювом ОторватьКлюв; ИначеЕсли Чел = Человеки1С Тогда ЗабратьЖКК; Иначе СжечьНапалмом КонецЕсли } а в другом случае придется вызовы пихать в каждый документ.. | ||||||||||
| 92
    
        Живой Ископаемый 23.07.13✎ 19:13 | 
        2(88) Сейчас так и есть.
  Просто внутри метода Убить() идет вызов УбитьВсехЧеловеков | ||||||||||
| 93
    
        szhukov 23.07.13✎ 19:15 | 
        (91) А в 
  ПричинитьНевыносимыеСтрадания(); Опять прийдется перечислять кому какие :) | ||||||||||
| 94
    
        Jump 23.07.13✎ 19:17 | 
        В каждом конкретном случае может быть либо хорошо, либо плохо.
  В общем - нормально. И такова реальность. Не нравится, пиши нетленку. Свое | ||||||||||
| 95
    
        IamAlexy 23.07.13✎ 19:20 | 
        (93) только прелесть схемы в том что форма причинения страданий, способы и длительность может меняться от сезона к сезону, может меняться порядок  и интенсивность от релиза к релизу.. 
  и лазить по каждому модулю и искать где эти страдания причиняются, а не забыли ли мы их причинить, а изменили ли мы алгоритм оных.. ну нафиг. надо чтобы все было упорядочено.. | ||||||||||
| 96
    
        Мимохожий Однако 23.07.13✎ 19:29 | 
        Не умение разобраться в чужом коде - проблема программиста.     Выносить проведение в бщий модуль Хорошо | ||||||||||
| 97
    
        Новиков 23.07.13✎ 19:35 | 
        Мда. Совсем что-то плохеет люд.     Свое | ||||||||||
| 98
    
        jsmith82 23.07.13✎ 19:36 | 
        Лень соображать     Свое | ||||||||||
| 99
    
        bushd 23.07.13✎ 19:47 | 
        (30)  http://www.rbcdaily.ru/cnews/562949987330602
  Мне вот это понравилось... 1С-ки в будущем))) http://yadi.sk/d/F3i1fJlF78R96 | ||||||||||
| 100
    
        bushd 23.07.13✎ 19:51 | 
        +(99) Башка разрастется как модули типовых)     | ||||||||||
| 101
    
        bushd 23.07.13✎ 19:53 | 
        +(99) Хотя статья расисткая) Нэгры где?     | ||||||||||
| 102
    
        MKZM 23.07.13✎ 20:03 | 
        Недавно перенес 4 документа из упп в ут, благодаря общим модулям было сделано за пару рабочих дней. Если бы каждый документ имел бы свой код в обработке проведения, то не уверен.     | ||||||||||
| 103
    
        Andreyyy 23.07.13✎ 20:50 | 
        Это же умереть не встать в каждый модуль толкать одно и тоже.
  Суть одна только как правило: приход и/или расход. Выносить проведение в бщий модуль Хорошо | ||||||||||
| 104
    
        Andreyyy 23.07.13✎ 20:54 | 
        (84) По всей видимости имелось ввиду типа как в типовых (УПП, КА) макет у регистра накопления учета затрат.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |