|
Зачем 1С выносит проведение документов в общий модуль? | ☑ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0
Aswed
23.07.13
✎
12:40
|
САБЖ
|
||||||||||
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) По всей видимости имелось ввиду типа как в типовых (УПП, КА) макет у регистра накопления учета затрат.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |