Имя: Пароль:
1C
1С v8
Зачем 1С выносит проведение документов в общий модуль?
,
0 Aswed
 
23.07.13
12:40
1. Выносить проведение в бщий модуль Плохо 40% (8)
2. Выносить проведение в бщий модуль Хорошо 35% (7)
3. Свое 25% (5)
Всего мнений: 20

САБЖ
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) По всей видимости имелось ввиду типа как в типовых (УПП, КА) макет у регистра накопления учета затрат.