gifts2017
ВНИМАНИЕ! ЦЕНА ЭТОЙ РАЗРАБОТКИ ВЫРАСТЕТ С 1-го ЯНВАРЯ 2017г.

Генератор кода: Перенос расчета из Excel в 1С V1.15

Опубликовал Олег Молочников (milkers) в раздел Обработки - Универсальные обработки

На любом предприятие есть огромное количество расчетов,  сделанных в Excel.  В качестве примера можно назвать предварительные расчеты рентабельности выполнения заказов, оптимальный уровень закупок, модели бюджетирования и  т.д.  Многие из этих расчетов имеет смысл интегрировать с 1С. Я предлагаю вам профессиональный инструмент внедренца, который может проделать эту работу в несколько кликов мышки

Генератор кода состоит из собственно генератора  и шаблона расчета. Генератор производит загрузку содержимого листов Excel, синтаксический разбор, вычисление последовательности формул и собственно генерацию кода и табличных макетов.

Шаблон это обработка, вставив в которую сгенерированный код и табличные макеты страниц мы получаем рабочий продукт, который может быть представлен заказчику.

Разберем работу генератора и шаблона на конкретном примере. Для начала, прошу прощения за несколько абстрактный пример. К сожалению, реальные примеры, которые имеют практическую ценность, также имеют ограничения по возможности их публикации. Чаще всего это примеры, связанные с планированием производства. В расчете, с которого это все начиналось, мы могли, выбрав параметры готовой продукции, скорректировав параметры технологических линий и операций получить готовый расчет по себестоимости изделия, расходуемых материалах, составе и длительности технологических операций за несколько минут. Отсюда прямой путь для автоматического формирования спецификаций и маршрутно-технологических карт. 

У нас есть пример расчета Полной Стоимости Кредита. Особого смысла переносить его в 1С я не вижу,  но на нем мы можем посмотреть возможности генератора и технологию переноса. 

Лист1:

Мы запускаем генератор и выбираем нужный файл Excel,  выбираем нужный лист и загружаем его содержимое с помощью кнопки “Выполнить загрузку”. После чего меняем Номер листа на следующий по порядку и снова жмем кнопку “Выполнить загрузку”.

Нажимаем кнопку “Получить макет”. После небольшой паузы на экране откроется табличный документ, с цветовой раскраской, границами и объединениями ячеек, а также содержимым, соответствующий листу Excel.:

Выделяем все ячейки (Ctrl+A)  и копируем в буфер обмена (Ctrl+ С)  после чего, открываем  шаблон в конфигураторе, находим там макет соответствующего листа, снова выделяем все ячейки (Ctrl+A)  и вставляем из буфера обмена (Ctrl+ V)  содержимое ячеек. Если нужного макета нет, то необходимо создать макет с именем “Лист”+номер листа. Содержимое макета – табличный документ.

Аналогично загрузим макеты для остальных листов.

Переходим на закладку генератора  “Упорядоченные по порядку расчета”  и нажимаем кнопку “Получить упорядоченные фомулы”:

Мы получаем формулы, упорядоченные по порядку расчета. Обратите внимание на трансформацию формул. Вы также можете выделить нужные строчки (или даже все) и нажать кнопку “Получить наименование слева”.  Колонка Наименование заполнится содержанием ячейки слева от формулы. Как правило, там находится описание ячейки. Это описание будет добавлено в комментарии в код 1С, что позволит лучше в нем ориентироваться.

Кнопка контроль позволить обернуть код расчета строки  1С в  "Попытку; ...  Исключение; КонецПопытки". Это может быть необходимо при возможности ошибки в строке расчета, например, делении на 0;

                Переходим на закладку Код 1С и нажимаем кнопку “Сформировать код”:

Получаем следующий код:

СписокЛистовЕкселя.Добавить("Лист1","1");

ТекущийЛистРасчета = 1; 
ЯчейкаТД("C9").Текст = ЗначТД("C5")/12; // месячная процентная ставка
ЯчейкаТД("C13").Текст = (ЗначТД("C4")*ЗначТД("C9"))/(1-POWER((1+ЗначТД("C9")),(-ЗначТД("C11")))); // ежемесячный платеж
ЯчейкаТД("C21").Текст = ЗначТД("C4"); // 1 месяц
ЯчейкаТД("D21").Текст = ЗначТД("C21")*ЗначТД("C9"); // 250 000
ЯчейкаТД("E21").Текст = ?(ЗначТД("A21")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D21")); // 2 500
ЯчейкаТД("C22").Текст = ?(ЗначТД("A22")>ЗначТД("C11"),0,ЗначТД("C21")-ЗначТД("E21")); // 2 месяц
ЯчейкаТД("D22").Текст = ЗначТД("C22")*ЗначТД("C9"); // 244 196,4225467872
ЯчейкаТД("E22").Текст = ?(ЗначТД("A22")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D22")); // 2 441,964225467872
ЯчейкаТД("C23").Текст = ?(ЗначТД("A23")>ЗначТД("C11"),0,ЗначТД("C22")-ЗначТД("E22")); // 3 месяц
ЯчейкаТД("D23").Текст = ЗначТД("C23")*ЗначТД("C9"); // 238 334,8093190423
ЯчейкаТД("E23").Текст = ?(ЗначТД("A23")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D23")); // 2 383,348093190423
ЯчейкаТД("C24").Текст = ?(ЗначТД("A24")>ЗначТД("C11"),0,ЗначТД("C23")-ЗначТД("E23")); // 4 месяц
ЯчейкаТД("D24").Текст = ЗначТД("C24")*ЗначТД("C9"); // 232 414,5799590199
ЯчейкаТД("E24").Текст = ?(ЗначТД("A24")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D24")); // 2 324,145799590199
ЯчейкаТД("C25").Текст = ?(ЗначТД("A25")>ЗначТД("C11"),0,ЗначТД("C24")-ЗначТД("E24")); // 5 месяц
ЯчейкаТД("D25").Текст = ЗначТД("C25")*ЗначТД("C9"); // 226 435,1483053973
ЯчейкаТД("E25").Текст = ?(ЗначТД("A25")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D25")); // 2 264,351483053973
ЯчейкаТД("C26").Текст = ?(ЗначТД("A26")>ЗначТД("C11"),0,ЗначТД("C25")-ЗначТД("E25")); // 6 месяц
ЯчейкаТД("D26").Текст = ЗначТД("C26")*ЗначТД("C9"); // 220 395,9223352385
ЯчейкаТД("E26").Текст = ?(ЗначТД("A26")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D26")); // 2 203,959223352385
ЯчейкаТД("C27").Текст = ?(ЗначТД("A27")>ЗначТД("C11"),0,ЗначТД("C26")-ЗначТД("E26")); // 7 месяц
ЯчейкаТД("D27").Текст = ЗначТД("C27")*ЗначТД("C9"); // 214 296,3041053781
ЯчейкаТД("E27").Текст = ?(ЗначТД("A27")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D27")); // 2 142,963041053781
ЯчейкаТД("C28").Текст = ?(ЗначТД("A28")>ЗначТД("C11"),0,ЗначТД("C27")-ЗначТД("E27")); // 8 месяц
ЯчейкаТД("D28").Текст = ЗначТД("C28")*ЗначТД("C9"); // 208 135,6896932191
ЯчейкаТД("E28").Текст = ?(ЗначТД("A28")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D28")); // 2 081,356896932191
ЯчейкаТД("C29").Текст = ?(ЗначТД("A29")>ЗначТД("C11"),0,ЗначТД("C28")-ЗначТД("E28")); // 9 месяц
ЯчейкаТД("D29").Текст = ЗначТД("C29")*ЗначТД("C9"); // 201 913,4691369385
ЯчейкаТД("E29").Текст = ?(ЗначТД("A29")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D29")); // 2 019,134691369385
ЯчейкаТД("C30").Текст = ?(ЗначТД("A30")>ЗначТД("C11"),0,ЗначТД("C29")-ЗначТД("E29")); // 10 месяц
ЯчейкаТД("D30").Текст = ЗначТД("C30")*ЗначТД("C9"); // 195 629,0263750951
ЯчейкаТД("E30").Текст = ?(ЗначТД("A30")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D30")); // 1 956,290263750951
ЯчейкаТД("C31").Текст = ?(ЗначТД("A31")>ЗначТД("C11"),0,ЗначТД("C30")-ЗначТД("E30")); // 11 месяц
ЯчейкаТД("D31").Текст = ЗначТД("C31")*ЗначТД("C9"); // 189 281,7391856332
ЯчейкаТД("E31").Текст = ?(ЗначТД("A31")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D31")); // 1 892,817391856332
ЯчейкаТД("C32").Текст = ?(ЗначТД("A32")>ЗначТД("C11"),0,ЗначТД("C31")-ЗначТД("E31")); // 12 месяц
ЯчейкаТД("D32").Текст = ЗначТД("C32")*ЗначТД("C9"); // 182 870,9791242768
ЯчейкаТД("E32").Текст = ?(ЗначТД("A32")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D32")); // 1 828,709791242768
ЯчейкаТД("C33").Текст = ?(ЗначТД("A33")>ЗначТД("C11"),0,ЗначТД("C32")-ЗначТД("E32")); // 13 месяц
ЯчейкаТД("F21").Текст = ЗначТД("C6")*ЗначТД("C4"); // 5 803,577453212791
ЯчейкаТД("D33").Текст = ЗначТД("C33")*ЗначТД("C9"); // 176 396,1114623067
ЯчейкаТД("E33").Текст = ?(ЗначТД("A33")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D33")); // 1 763,961114623067
ЯчейкаТД("C34").Текст = ?(ЗначТД("A34")>ЗначТД("C11"),0,ЗначТД("C33")-ЗначТД("E33")); // 14 месяц
ЯчейкаТД("D34").Текст = ЗначТД("C34")*ЗначТД("C9"); // 169 856,495123717
ЯчейкаТД("E34").Текст = ?(ЗначТД("A34")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D34")); // 1 698,56495123717
ЯчейкаТД("C35").Текст = ?(ЗначТД("A35")>ЗначТД("C11"),0,ЗначТД("C34")-ЗначТД("E34")); // 15 месяц
ЯчейкаТД("D35").Текст = ЗначТД("C35")*ЗначТД("C9"); // 163 251,4826217414
ЯчейкаТД("E35").Текст = ?(ЗначТД("A35")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D35")); // 1 632,514826217414
ЯчейкаТД("C36").Текст = ?(ЗначТД("A36")>ЗначТД("C11"),0,ЗначТД("C35")-ЗначТД("E35")); // 16 месяц
ЯчейкаТД("D36").Текст = ЗначТД("C36")*ЗначТД("C9"); // 156 580,419994746
ЯчейкаТД("E36").Текст = ?(ЗначТД("A36")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D36")); // 1 565,80419994746
ЯчейкаТД("C37").Текст = ?(ЗначТД("A37")>ЗначТД("C11"),0,ЗначТД("C36")-ЗначТД("E36")); // 17 месяц
ЯчейкаТД("D37").Текст = ЗначТД("C37")*ЗначТД("C9"); // 149 842,6467414807
ЯчейкаТД("E37").Текст = ?(ЗначТД("A37")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D37")); // 1 498,426467414807
ЯчейкаТД("C38").Текст = ?(ЗначТД("A38")>ЗначТД("C11"),0,ЗначТД("C37")-ЗначТД("E37")); // 18 месяц
ЯчейкаТД("D38").Текст = ЗначТД("C38")*ЗначТД("C9"); // 143 037,4957556827
ЯчейкаТД("E38").Текст = ?(ЗначТД("A38")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D38")); // 1 430,374957556827
ЯчейкаТД("C39").Текст = ?(ЗначТД("A39")>ЗначТД("C11"),0,ЗначТД("C38")-ЗначТД("E38")); // 19 месяц
ЯчейкаТД("D39").Текст = ЗначТД("C39")*ЗначТД("C9"); // 136 164,2932600267
ЯчейкаТД("E39").Текст = ?(ЗначТД("A39")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D39")); // 1 361,642932600267
ЯчейкаТД("C40").Текст = ?(ЗначТД("A40")>ЗначТД("C11"),0,ЗначТД("C39")-ЗначТД("E39")); // 20 месяц
ЯчейкаТД("D40").Текст = ЗначТД("C40")*ЗначТД("C9"); // 129 222,3587394142
ЯчейкаТД("E40").Текст = ?(ЗначТД("A40")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D40")); // 1 292,223587394142
ЯчейкаТД("C41").Текст = ?(ЗначТД("A41")>ЗначТД("C11"),0,ЗначТД("C40")-ЗначТД("E40")); // 21 месяц
ЯчейкаТД("D41").Текст = ЗначТД("C41")*ЗначТД("C9"); // 122 211,0048735956
ЯчейкаТД("E41").Текст = ?(ЗначТД("A41")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D41")); // 1 222,110048735956
ЯчейкаТД("C42").Текст = ?(ЗначТД("A42")>ЗначТД("C11"),0,ЗначТД("C41")-ЗначТД("E41")); // 22 месяц
ЯчейкаТД("D42").Текст = ЗначТД("C42")*ЗначТД("C9"); // 115 129,5374691187
ЯчейкаТД("E42").Текст = ?(ЗначТД("A42")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D42")); // 1 151,295374691187
ЯчейкаТД("C43").Текст = ?(ЗначТД("A43")>ЗначТД("C11"),0,ЗначТД("C42")-ЗначТД("E42")); // 23 месяц
ЯчейкаТД("D43").Текст = ЗначТД("C43")*ЗначТД("C9"); // 107 977,2553905971
ЯчейкаТД("E43").Текст = ?(ЗначТД("A43")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D43")); // 1 079,772553905971
ЯчейкаТД("C44").Текст = ?(ЗначТД("A44")>ЗначТД("C11"),0,ЗначТД("C43")-ЗначТД("E43")); // 24 месяц
ЯчейкаТД("D44").Текст = ЗначТД("C44")*ЗначТД("C9"); // 100 753,4504912903
ЯчейкаТД("E44").Текст = ?(ЗначТД("A44")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D44")); // 1 007,534504912903
ЯчейкаТД("C45").Текст = ?(ЗначТД("A45")>ЗначТД("C11"),0,ЗначТД("C44")-ЗначТД("E44")); // 25 месяц
ЯчейкаТД("D45").Текст = ЗначТД("C45")*ЗначТД("C9"); // 93 457,4075429904
ЯчейкаТД("J20").Текст = -ЗначТД("C4"); // 
ЯчейкаТД("E45").Текст = ?(ЗначТД("A45")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D45")); // 934,574075429904
ЯчейкаТД("C46").Текст = ?(ЗначТД("A46")>ЗначТД("C11"),0,ЗначТД("C45")-ЗначТД("E45")); // 26 месяц
ЯчейкаТД("G21").Текст = ?(ЗначТД("A21")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I21").Текст = SUM("F21:F21",ЗначТД("D21")); // 2 500
ЯчейкаТД("I22").Текст = SUM("F22:F22",ЗначТД("D22")); // 0
ЯчейкаТД("H21").Текст = ?(bAND(ROUND((ЗначТД("A21")-1)/12,0)=(ЗначТД("A21")-1)/12,ЗначТД("A21")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J21").Текст = SUM("D21:H21"); // 2 500
ЯчейкаТД("D46").Текст = ЗначТД("C46")*ЗначТД("C9"); // 86 088,40416520753
ЯчейкаТД("G22").Текст = ?(ЗначТД("A22")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I23").Текст = SUM("F23:F23",ЗначТД("D23")); // 0
ЯчейкаТД("H22").Текст = ?(bAND(ROUND((ЗначТД("A22")-1)/12,0)=(ЗначТД("A22")-1)/12,ЗначТД("A22")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J22").Текст = SUM("D22:H22"); // 2 441,964225467872
ЯчейкаТД("E46").Текст = ?(ЗначТД("A46")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D46")); // 860,8840416520752
ЯчейкаТД("G23").Текст = ?(ЗначТД("A23")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I24").Текст = SUM("F24:F24",ЗначТД("D24")); // 0
ЯчейкаТД("H23").Текст = ?(bAND(ROUND((ЗначТД("A23")-1)/12,0)=(ЗначТД("A23")-1)/12,ЗначТД("A23")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J23").Текст = SUM("D23:H23"); // 2 383,348093190423
ЯчейкаТД("C47").Текст = ?(ЗначТД("A47")>ЗначТД("C11"),0,ЗначТД("C46")-ЗначТД("E46")); // 27 месяц
ЯчейкаТД("G24").Текст = ?(ЗначТД("A24")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I25").Текст = SUM("F25:F25",ЗначТД("D25")); // 0
ЯчейкаТД("H24").Текст = ?(bAND(ROUND((ЗначТД("A24")-1)/12,0)=(ЗначТД("A24")-1)/12,ЗначТД("A24")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J24").Текст = SUM("D24:H24"); // 2 324,145799590199
ЯчейкаТД("D47").Текст = ЗначТД("C47")*ЗначТД("C9"); // 78 645,71075364681
ЯчейкаТД("G25").Текст = ?(ЗначТД("A25")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I26").Текст = SUM("F26:F26",ЗначТД("D26")); // 0
ЯчейкаТД("H25").Текст = ?(bAND(ROUND((ЗначТД("A25")-1)/12,0)=(ЗначТД("A25")-1)/12,ЗначТД("A25")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J25").Текст = SUM("D25:H25"); // 2 264,351483053973
ЯчейкаТД("E47").Текст = ?(ЗначТД("A47")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D47")); // 786,4571075364681
ЯчейкаТД("G26").Текст = ?(ЗначТД("A26")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I27").Текст = SUM("F27:F27",ЗначТД("D27"));
ЯчейкаТД("H26").Текст = ?(bAND(ROUND((ЗначТД("A26")-1)/12,0)=(ЗначТД("A26")-1)/12,ЗначТД("A26")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J26").Текст = SUM("D26:H26"); // 2 203,959223352385
ЯчейкаТД("C48").Текст = ?(ЗначТД("A48")>ЗначТД("C11"),0,ЗначТД("C47")-ЗначТД("E47")); // 28 месяц
ЯчейкаТД("G27").Текст = ?(ЗначТД("A27")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I28").Текст = SUM("F28:F28",ЗначТД("D28")); // 0
ЯчейкаТД("H27").Текст = ?(bAND(ROUND((ЗначТД("A27")-1)/12,0)=(ЗначТД("A27")-1)/12,ЗначТД("A27")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J27").Текст = SUM("D27:H27"); // 2 142,963041053781
ЯчейкаТД("D48").Текст = ЗначТД("C48")*ЗначТД("C9"); // 71 128,59040797049
ЯчейкаТД("G28").Текст = ?(ЗначТД("A28")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I29").Текст = SUM("F29:F29",ЗначТД("D29")); // 0
ЯчейкаТД("H28").Текст = ?(bAND(ROUND((ЗначТД("A28")-1)/12,0)=(ЗначТД("A28")-1)/12,ЗначТД("A28")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J28").Текст = SUM("D28:H28"); // 2 081,356896932191
ЯчейкаТД("E48").Текст = ?(ЗначТД("A48")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D48")); // 711,2859040797049
ЯчейкаТД("G29").Текст = ?(ЗначТД("A29")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I30").Текст = SUM("F30:F30",ЗначТД("D30")); // 0
ЯчейкаТД("H29").Текст = ?(bAND(ROUND((ЗначТД("A29")-1)/12,0)=(ЗначТД("A29")-1)/12,ЗначТД("A29")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J29").Текст = SUM("D29:H29"); // 2 019,134691369385
ЯчейкаТД("C49").Текст = ?(ЗначТД("A49")>ЗначТД("C11"),0,ЗначТД("C48")-ЗначТД("E48")); // 29 месяц
ЯчейкаТД("G30").Текст = ?(ЗначТД("A30")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I31").Текст = SUM("F31:F31",ЗначТД("D31")); // 0
ЯчейкаТД("H30").Текст = ?(bAND(ROUND((ЗначТД("A30")-1)/12,0)=(ЗначТД("A30")-1)/12,ЗначТД("A30")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J30").Текст = SUM("D30:H30"); // 1 956,290263750951
ЯчейкаТД("D49").Текст = ЗначТД("C49")*ЗначТД("C9"); // 63 536,29885883741
ЯчейкаТД("G31").Текст = ?(ЗначТД("A31")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I32").Текст = SUM("F32:F32",ЗначТД("D32")); // 0
ЯчейкаТД("H31").Текст = ?(bAND(ROUND((ЗначТД("A31")-1)/12,0)=(ЗначТД("A31")-1)/12,ЗначТД("A31")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J31").Текст = SUM("D31:H31"); // 1 892,817391856332
ЯчейкаТД("E49").Текст = ?(ЗначТД("A49")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D49")); // 635,362988588374
ЯчейкаТД("G32").Текст = ?(ЗначТД("A32")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I33").Текст = SUM("F33:F33",ЗначТД("D33")); // 2 500
ЯчейкаТД("H32").Текст = ?(bAND(ROUND((ЗначТД("A32")-1)/12,0)=(ЗначТД("A32")-1)/12,ЗначТД("A32")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J32").Текст = SUM("D32:H32"); // 1 828,709791242768
ЯчейкаТД("C50").Текст = ?(ЗначТД("A50")>ЗначТД("C11"),0,ЗначТД("C49")-ЗначТД("E49")); // 30 месяц
ЯчейкаТД("G33").Текст = ?(ЗначТД("A33")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I34").Текст = SUM("F34:F34",ЗначТД("D34")); // 0
ЯчейкаТД("H33").Текст = ?(bAND(ROUND((ЗначТД("A33")-1)/12,0)=(ЗначТД("A33")-1)/12,ЗначТД("A33")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J33").Текст = SUM("D33:H33"); // 1 763,961114623067
ЯчейкаТД("D50").Текст = ЗначТД("C50")*ЗначТД("C9"); // 55 868,08439421299
ЯчейкаТД("G34").Текст = ?(ЗначТД("A34")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I35").Текст = SUM("F35:F35",ЗначТД("D35")); // 0
ЯчейкаТД("H34").Текст = ?(bAND(ROUND((ЗначТД("A34")-1)/12,0)=(ЗначТД("A34")-1)/12,ЗначТД("A34")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J34").Текст = SUM("D34:H34"); // 1 698,56495123717
ЯчейкаТД("E50").Текст = ?(ЗначТД("A50")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D50")); // 558,6808439421299
ЯчейкаТД("G35").Текст = ?(ЗначТД("A35")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I36").Текст = SUM("F36:F36",ЗначТД("D36")); // 0
ЯчейкаТД("H35").Текст = ?(bAND(ROUND((ЗначТД("A35")-1)/12,0)=(ЗначТД("A35")-1)/12,ЗначТД("A35")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J35").Текст = SUM("D35:H35"); // 1 632,514826217414
ЯчейкаТД("C51").Текст = ?(ЗначТД("A51")>ЗначТД("C11"),0,ЗначТД("C50")-ЗначТД("E50")); // 31 месяц
ЯчейкаТД("G36").Текст = ?(ЗначТД("A36")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I37").Текст = SUM("F37:F37",ЗначТД("D37")); // 0
ЯчейкаТД("H36").Текст = ?(bAND(ROUND((ЗначТД("A36")-1)/12,0)=(ЗначТД("A36")-1)/12,ЗначТД("A36")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J36").Текст = SUM("D36:H36"); // 1 565,80419994746
ЯчейкаТД("D51").Текст = ЗначТД("C51")*ЗначТД("C9"); // 48 123,18778494233
ЯчейкаТД("G37").Текст = ?(ЗначТД("A37")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I38").Текст = SUM("F38:F38",ЗначТД("D38")); // 0
ЯчейкаТД("H37").Текст = ?(bAND(ROUND((ЗначТД("A37")-1)/12,0)=(ЗначТД("A37")-1)/12,ЗначТД("A37")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J37").Текст = SUM("D37:H37"); // 1 498,426467414807
ЯчейкаТД("E51").Текст = ?(ЗначТД("A51")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D51")); // 481,2318778494233
ЯчейкаТД("G38").Текст = ?(ЗначТД("A38")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I39").Текст = SUM("F39:F39",ЗначТД("D39")); // 0
ЯчейкаТД("H38").Текст = ?(bAND(ROUND((ЗначТД("A38")-1)/12,0)=(ЗначТД("A38")-1)/12,ЗначТД("A38")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J38").Текст = SUM("D38:H38"); // 1 430,374957556827
ЯчейкаТД("C52").Текст = ?(ЗначТД("A52")>ЗначТД("C11"),0,ЗначТД("C51")-ЗначТД("E51")); // 32 месяц
ЯчейкаТД("G39").Текст = ?(ЗначТД("A39")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I40").Текст = SUM("F40:F40",ЗначТД("D40")); // 0
ЯчейкаТД("H39").Текст = ?(bAND(ROUND((ЗначТД("A39")-1)/12,0)=(ЗначТД("A39")-1)/12,ЗначТД("A39")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J39").Текст = SUM("D39:H39"); // 1 361,642932600267
ЯчейкаТД("D52").Текст = ЗначТД("C52")*ЗначТД("C9"); // 40 300,84220957896
ЯчейкаТД("G40").Текст = ?(ЗначТД("A40")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I41").Текст = SUM("F41:F41",ЗначТД("D41")); // 0
ЯчейкаТД("H40").Текст = ?(bAND(ROUND((ЗначТД("A40")-1)/12,0)=(ЗначТД("A40")-1)/12,ЗначТД("A40")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J40").Текст = SUM("D40:H40"); // 1 292,223587394142
ЯчейкаТД("E52").Текст = ?(ЗначТД("A52")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D52")); // 403,0084220957896
ЯчейкаТД("G41").Текст = ?(ЗначТД("A41")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I42").Текст = SUM("F42:F42",ЗначТД("D42")); // 0
ЯчейкаТД("H41").Текст = ?(bAND(ROUND((ЗначТД("A41")-1)/12,0)=(ЗначТД("A41")-1)/12,ЗначТД("A41")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J41").Текст = SUM("D41:H41"); // 1 222,110048735956
ЯчейкаТД("C53").Текст = ?(ЗначТД("A53")>ЗначТД("C11"),0,ЗначТД("C52")-ЗначТД("E52")); // 33 месяц
ЯчейкаТД("G42").Текст = ?(ЗначТД("A42")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I43").Текст = SUM("F43:F43",ЗначТД("D43")); // 0
ЯчейкаТД("H42").Текст = ?(bAND(ROUND((ЗначТД("A42")-1)/12,0)=(ЗначТД("A42")-1)/12,ЗначТД("A42")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J42").Текст = SUM("D42:H42"); // 1 151,295374691187
ЯчейкаТД("D53").Текст = ЗначТД("C53")*ЗначТД("C9"); // 32 400,27317846196
ЯчейкаТД("G43").Текст = ?(ЗначТД("A43")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I44").Текст = SUM("F44:F44",ЗначТД("D44")); // 0
ЯчейкаТД("H43").Текст = ?(bAND(ROUND((ЗначТД("A43")-1)/12,0)=(ЗначТД("A43")-1)/12,ЗначТД("A43")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J43").Текст = SUM("D43:H43"); // 1 079,772553905971
ЯчейкаТД("E53").Текст = ?(ЗначТД("A53")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D53")); // 324,0027317846196
ЯчейкаТД("G44").Текст = ?(ЗначТД("A44")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I45").Текст = SUM("F45:F45",ЗначТД("D45")); // 2 500
ЯчейкаТД("H44").Текст = ?(bAND(ROUND((ЗначТД("A44")-1)/12,0)=(ЗначТД("A44")-1)/12,ЗначТД("A44")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J44").Текст = SUM("D44:H44"); // 1 007,534504912903
ЯчейкаТД("C54").Текст = ?(ЗначТД("A54")>ЗначТД("C11"),0,ЗначТД("C53")-ЗначТД("E53")); // 34 месяц
ЯчейкаТД("G45").Текст = ?(ЗначТД("A45")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I46").Текст = SUM("F46:F46",ЗначТД("D46")); // 0
ЯчейкаТД("H45").Текст = ?(bAND(ROUND((ЗначТД("A45")-1)/12,0)=(ЗначТД("A45")-1)/12,ЗначТД("A45")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J45").Текст = SUM("D45:H45"); // 934,574075429904
ЯчейкаТД("D54").Текст = ЗначТД("C54")*ЗначТД("C9"); // 24 420,69845703379
ЯчейкаТД("G46").Текст = ?(ЗначТД("A46")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I47").Текст = SUM("F47:F47",ЗначТД("D47")); // 0
ЯчейкаТД("H46").Текст = ?(bAND(ROUND((ЗначТД("A46")-1)/12,0)=(ЗначТД("A46")-1)/12,ЗначТД("A46")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J46").Текст = SUM("D46:H46"); // 860,8840416520752
ЯчейкаТД("E54").Текст = ?(ЗначТД("A54")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D54")); // 244,2069845703379
ЯчейкаТД("G47").Текст = ?(ЗначТД("A47")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I48").Текст = SUM("F48:F48",ЗначТД("D48")); // 0
ЯчейкаТД("H47").Текст = ?(bAND(ROUND((ЗначТД("A47")-1)/12,0)=(ЗначТД("A47")-1)/12,ЗначТД("A47")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J47").Текст = SUM("D47:H47"); // 786,4571075364681
ЯчейкаТД("C55").Текст = ?(ЗначТД("A55")>ЗначТД("C11"),0,ЗначТД("C54")-ЗначТД("E54")); // 35 месяц
ЯчейкаТД("G48").Текст = ?(ЗначТД("A48")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I49").Текст = SUM("F49:F49",ЗначТД("D49")); // 0
ЯчейкаТД("H48").Текст = ?(bAND(ROUND((ЗначТД("A48")-1)/12,0)=(ЗначТД("A48")-1)/12,ЗначТД("A48")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J48").Текст = SUM("D48:H48"); // 711,2859040797049
ЯчейкаТД("D55").Текст = ЗначТД("C55")*ЗначТД("C9"); // 16 361,32798839134
ЯчейкаТД("G49").Текст = ?(ЗначТД("A49")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I50").Текст = SUM("F50:F50",ЗначТД("D50")); // 0
ЯчейкаТД("H49").Текст = ?(bAND(ROUND((ЗначТД("A49")-1)/12,0)=(ЗначТД("A49")-1)/12,ЗначТД("A49")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J49").Текст = SUM("D49:H49"); // 635,362988588374
ЯчейкаТД("E55").Текст = ?(ЗначТД("A55")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D55")); // 163,6132798839134
ЯчейкаТД("G50").Текст = ?(ЗначТД("A50")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I51").Текст = SUM("F51:F51",ЗначТД("D51")); // 0
ЯчейкаТД("H50").Текст = ?(bAND(ROUND((ЗначТД("A50")-1)/12,0)=(ЗначТД("A50")-1)/12,ЗначТД("A50")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J50").Текст = SUM("D50:H50"); // 558,6808439421299
ЯчейкаТД("C56").Текст = ?(ЗначТД("A56")>ЗначТД("C11"),0,ЗначТД("C55")-ЗначТД("E55")); // 36 месяц
ЯчейкаТД("G51").Текст = ?(ЗначТД("A51")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I52").Текст = SUM("F52:F52",ЗначТД("D52")); // 0
ЯчейкаТД("H51").Текст = ?(bAND(ROUND((ЗначТД("A51")-1)/12,0)=(ЗначТД("A51")-1)/12,ЗначТД("A51")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J51").Текст = SUM("D51:H51"); // 481,2318778494233
ЯчейкаТД("D56").Текст = ЗначТД("C56")*ЗначТД("C9"); // 8 221,363815062457
ЯчейкаТД("G52").Текст = ?(ЗначТД("A52")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I53").Текст = SUM("F53:F53",ЗначТД("D53")); // 0
ЯчейкаТД("H52").Текст = ?(bAND(ROUND((ЗначТД("A52")-1)/12,0)=(ЗначТД("A52")-1)/12,ЗначТД("A52")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J52").Текст = SUM("D52:H52"); // 403,0084220957896
ЯчейкаТД("E56").Текст = ?(ЗначТД("A56")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D56")); // 82,21363815062458
ЯчейкаТД("G53").Текст = ?(ЗначТД("A53")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I54").Текст = SUM("F54:F54",ЗначТД("D54")); // 0
ЯчейкаТД("H53").Текст = ?(bAND(ROUND((ЗначТД("A53")-1)/12,0)=(ЗначТД("A53")-1)/12,ЗначТД("A53")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J53").Текст = SUM("D53:H53"); // 324,0027317846196
ЯчейкаТД("C57").Текст = ?(ЗначТД("A57")>ЗначТД("C11"),0,ЗначТД("C56")-ЗначТД("E56")); // 37 месяц
ЯчейкаТД("G54").Текст = ?(ЗначТД("A54")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I55").Текст = SUM("F55:F55",ЗначТД("D55")); // 0
ЯчейкаТД("H54").Текст = ?(bAND(ROUND((ЗначТД("A54")-1)/12,0)=(ЗначТД("A54")-1)/12,ЗначТД("A54")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J54").Текст = SUM("D54:H54"); // 244,2069845703379
ЯчейкаТД("D57").Текст = ЗначТД("C57")*ЗначТД("C9"); // 0
ЯчейкаТД("G55").Текст = ?(ЗначТД("A55")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I56").Текст = SUM("F56:F56",ЗначТД("D56")); // 0
ЯчейкаТД("H55").Текст = ?(bAND(ROUND((ЗначТД("A55")-1)/12,0)=(ЗначТД("A55")-1)/12,ЗначТД("A55")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J55").Текст = SUM("D55:H55"); // 163,6132798839134
ЯчейкаТД("C14").Текст = SUM("D21:D57"); // сумма выплаченных процентов
ЯчейкаТД("G56").Текст = ?(ЗначТД("A56")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I57").Текст = SUM("F57:F57",ЗначТД("D57")); // 0
ЯчейкаТД("H56").Текст = ?(bAND(ROUND((ЗначТД("A56")-1)/12,0)=(ЗначТД("A56")-1)/12,ЗначТД("A56")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J56").Текст = SUM("D56:H56"); // 82,21363815062458
ЯчейкаТД("E57").Текст = ?(ЗначТД("A57")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D57")); // 0
ЯчейкаТД("G57").Текст = ?(ЗначТД("A57")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("C15").Текст = SUM("I21:I57"); // сумма переплаты по кредиту
ЯчейкаТД("H57").Текст = ?(bAND(ROUND((ЗначТД("A57")-1)/12,0)=(ЗначТД("A57")-1)/12,ЗначТД("A57")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 0
ЯчейкаТД("J57").Текст = SUM("D57:H57"); // 0
ЯчейкаТД("C17").Текст = IRR("J20:J57",0)*12; // Полная стоимость кредита
ЯчейкаТД("D59").Текст = SUM("D21:D58"); // 
ЯчейкаТД("E59").Текст = SUM("E21:E58"); // 48 928,78831566079
ЯчейкаТД("F59").Текст = SUM("F21:F58"); // 249 999,9999999997
ЯчейкаТД("I59").Текст = SUM("I21:I58"); // 
ЯчейкаТД("J59").Текст = SUM("J21:J58"); // 48 928,78831566079

Этот код  в конфигураторе вставляем в тело функции “ РассчитатьНаСервере()” в модуле формы шаблона.

Вот так выглядит конечый результат:

Длинный код? Но, тем не менее, работает  исключительно быстро. Небольшая заминка только на тех функциях, которые вычисляют свое значение не в 1С, а выполняют код VBA  и просят установленный на компьютер EXCEL рассчитать  за нее значение, после чего передают его обратно в 1С. То есть некоторая 1С обертка для методов Excel.  В нашем примере всего одна такая функция IRR(ВСД)  (http://msoffice-prowork.com/spravka-ms-excel/finansovye-funkcii-financial/vsd-irr/). IRR возвращает внутреннюю ставку доходности для ряда потоков денежных средств, представленных их численными значениями. Так как эта функция вызывается всего 1 раз, то задержка не заметна. Плюсы такого подхода, что мы можем рассчитать сложные функции, алгоритм эмуляции которых не очевиден. Минусы – быстродействие и необходимость установленного на компьютер Excel.  К счастью большинство расчетов обходится более простыми функциями.

Получившаяся форма хорошо знакома пользователям и при нажатии кнопки "Рассчитать" расчет соответствует расчету в Excel c высокой точностью.

Тем не менее, количество кода дико избыточно. Почти весь код – повторяющийся код для вычисления аргументов таблицы по каждому месяцу платежа. Если бы это был реальный пример, то стоило бы на другой закладке формы сделать таблицу  для расчета повторяющихся строк, а код для расчета строки прописать в событие ПриОкончанииРедактирования для этой таблицы, соответственно изменив, чтоб он работал с аргументами строки.  Расчет сразу станет универсальным.  Для дальнейшего расчета воспользоваться итогами этой таблицы. Чтоб это было удобнее сделать, рекомендую перед загрузкой расчета очистить в копии файла содержимое всех повторяющихся строк кроме первой. ( Из этой строки вы потом возьмете формулы для таблицы). 

Попробую перечислить преимущества интеграции расчета в 1С, как это видится мне: 
1. Не нужно открывать дополнительное окно, весь расчет делается на закладке того документа (справочника) где он нужен и хранится в нем же (Требует дополнительной работы программиста по внедрению кода обработки в 1С). 
2. Интеграция с данными в 1С. Автоматическая загрузка курса, банковских ставок, стоимости услуг на текущие дату и прочее сможет значительно ускорить работу. На основании расчета в 1С могут создаваться новые документы, например спецификации (Требует дополнительной работы программиста по внедрению кода обработки в 1С). 
3. Скрытие формул от конечного пользователя. 
4. Возможность добавления программной логике по контролю допустимости вводимых значений во избежание ошибок (Требует дополнительной работы программиста по внедрению кода обработки в 1С). 
5. Возможность программного скрытия части расчета и параметров в зависимости от набора прав (Требует дополнительной работы программиста по внедрению кода обработки в 1С). 
6. Возможность программного добавления (скрытия) областей в зависимости от условий расчета. (Требует дополнительной работы программиста по внедрению кода обработки в 1С). 

Вот пример кода скрывающего неиспользуемые столбцы: 

&НаСервере
Процедура КоличествоЛистовКПечатиПриИзмененииНаСервере()
	Для I=1 по 10-Объект.КоличествоЛистовКПечати цикл
		Область = Лист1.Область(,12-I , ,12-I );
		Область.Видимость = Ложь;
	КонецЦикла;
	Для I=10-Объект.КоличествоЛистовКПечати+1 по 10 цикл
		Область = Лист1.Область(,12-I , ,12-I );
		Область.Видимость = Истина;
	КонецЦикла;
КонецПроцедуры

Например, при добавлении операций на других станках появятся новые области с новыми параметрами. 
При добавлении в расчет нескольких видов продукции появятся новые столбцы. При этом расчет в любом случае 
будет работать корректно. 
Список можно продолжать в зависимости от богатства фантазии. Но из списка видно, что основные преимущества дает именно интеграция в решение 1С.


Шаблон расчета работает в любой конфигурации на управляемых и не управляемых формах на платформе V8.2 + Код шаблона полностью открыт. Для работы Excel требуется в случае использования функций оберток Excel.

Генератор работает пока только в конфигурациях на управляемых формах на платформе V8.3.6 +.  Код генератора полностью открыт. Для работы нужен Excel 97+ для Windows.

Период бесплатной техподдержки составляет 1 месяц.

Внимание: В Ваших расчетах могут содержаться формулы, эмуляция которых пока не поддерживается шаблоном. Список поддерживаемых формул непрерывно увеличивается. Если Вы столкнулись с такой ситуацией, то, пожалуйста, сообщите об этом. Простые функции будут добавлены в течение недели. Разработка эмуляций функций со сложными алгоритмами расчета может занять более продолжительное время.

Внимание: В Ваших расчетах могут встретиться вставки на Visual Basic. Конвертация таких расчетов в код 1С в текущей версии пока не производится. Как правило, код достаточно легко приспосабливается к генерируемому коду расчета 1С, но это потребует вмешательства программиста.

Изменения в  версиях:

В ВЕРСИИ 1.15 обеспечена возможность работы шаблона в управляемых и неуправляемых формах, начиная с версии платформы 8.2.

Гарантия возврата денег

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом течение 14-ти дней со дня поступления денег на наш счет.

Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.

Для возврата оплаты просто свяжитесь с нами.

Скачать файлы

Наименование Файл Версия Размер
Пример. Полная стоимость кредита V1.14
.epf 26,07Kb
05.12.16
0
.epf 26,07Kb Скачать
Пример Расчёт электрических нагрузок V1.15
.epf 22,05Kb
05.12.16
0
.epf 22,05Kb Скачать
Генератор кода: Перенос расчета из Excel в 1С V1.15
04.12.2016
1.15
Продление технической поддержки на 12 мес.
05.12.2016
1000 руб.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Губанов (gubanoff) 17.11.16 11:45
Свежее, интересное решение. За новизну респект. Объем работы проделан тоже немалый. Но остается главный вопрос - зачем это нужно? Зачем переносить в 1С то, что в экселе работает и всех устраивает? Тем более в экселе, я так понимаю, гораздо легче будет что-то поправить, чем в 1С (скопировать столбцы, изменить формулы и т.п.). Пока представляется только как помощник переноса неких форм в 1С, не более.
2. Олег Молочников (milkers) 17.11.16 13:19
(1) gubanoff, Попробую перечислить преимущества, как это видится мне:
1. Не нужно открывать дополнительное окно, весь расчет делается на закладке того документа (справочника) где он нужен и хранится в нем же. (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
2. Интеграция с данными в 1С. Автоматическая загрузка курса, банковских ставок, стоимости услуг на текущие дату и прочее сможет значительно ускорить работу. На основании расчета в 1С могут создаваться новые документы, например спецификации (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
3. Скрытие формул от конечного пользователя.
4. Возможность добавления программной логике по контролю допустимости вводимых значений во избежание ошибок (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
5. Возможность программного скрытия части расчета и параметров в зависимости от набора прав (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
6. Возможность программного добавления (скрытия) областей в зависимости от условий расчета.(Требует дополнительной работы программиста по внедрению кода обработки в 1С).

Например, при добавлении операций на других станках появятся новые области с новыми параметрами.
При добавлении в расчет нескольких видов продукции появятся новые столбцы. При этом расчет в любом случае
будет работать корректно.
Список можно продолжать в зависимости от богатства фантазии. Но из списка видно, что основные преимущества дает именно интеграция в решение 1С.
dreadlord; +1 Ответить
3. Сергей Алферов (SunShinne) 22.11.16 14:59
непонятно зачем но круто
4. Олег Молочников (milkers) 22.11.16 19:18
(1) По поводу редактирования. Я уже много раз переделывал изначальный расчет, ради которого это все и затевалось. Добавлялись новые возможные виды технологических операций, колонки с вариантами. Все для того, чтоб добиться универсальности. Переделывать было намного легче, чем Вы думаете. Изменения вносились в файл экселя, после чего он обрабатывался генератором. Причем изменения вносились специалистом, который и создал изначальный расчет.
dreadlord; +1 Ответить
5. s e (dreadlord) 29.11.16 10:47
Отличное решение, особенно в части возможности юзания оперативных данных из 1С. Респект и уважуха. Плюс адназначна
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа