Excel Studio for 1C V2.11

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

Арт.: 561890

Лист1.png
ВыполнитьЗагрузку.png
МакетЛиста.png
ШаблонЛиста.png
ПолучитьУпорядоченныеФормулы.png
ПримерРасчета.png
Лист1.png
ВыполнитьЗагрузку.png
МакетЛиста.png
ШаблонЛиста.png
ПолучитьУпорядоченныеФормулы.png
ПримерРасчета.png

2400 руб.

500 руб.

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

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

Простой пример: В конфигурации нужно создать документ: "Расчет цены изделия". Сам расчет давно существует в Excel и имеет примерно следующий вид:

Номер:    
Дата:    
Расчетный курс: 85  
Проект:    
Наименование:    
Менеджер:    
Исполнитель:    
     
     
Покупное изделие
Цена изготовителя, евро. - 0 €
страховка, евро. 0,19% 0 €
кол-во машин, шт. 4  
автофрахт, евро. 10000 2 500 €
таможенная пошлина, евро. 0,00% 0 €
НДС, евро. 18,00% 450 €
Услуги брокера на 1 машину , евро. 1000 250 €
Банковские расходы, евро. 1,00% 0 €
ИТОГО стоимость импортного оборудования, евро. - 0 €
ИТОГО стоимость импортного оборудования, руб. - 0р.
Стоимость НР-17 (наше производство), руб.    
НП-19, руб. -  
Испытания, руб. - 0р.
ВСЕГО прямых расходов, руб. - 0р.
Наценка, руб. 4% 0р.
Продажная цена с НДС, руб. - 0р.
Продажная цена без НДС, руб. - 0р.
Дополнительные усл. (с НДС)
     
     
     
     
     
ИТОГО цена предложения с НДС  - 0р.
ИТОГО цена предложения без НДС - 0р.

 Первым делом мы из конфигурации примера копируем в нашу конфигурацию шаблон документа и переименовываем его под наши нужды.

Запускаем Excel Studio. Загружаем табличный документ из Excel и помещаем его в макет табличного документа ЛИСТ1  нашего документа в конфигураторе. (Более детально порядок действий смотри в следующем примере). Создаем автоматически  код 1С: 

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

ТекущийЛистРасчета = 1; 
ЯчейкаТД("C12").Текст = ЗначТД("C11")*ЗначТД("B12"); // 
ЯчейкаТД("C14").Текст = ЗначТД("B14")/ЗначТД("B13"); // 
ЯчейкаТД("C15").Текст = (ЗначТД("C11")+ЗначТД("C12")+ЗначТД("C14")/3*2)*ЗначТД("B15"); // 
ЯчейкаТД("C16").Текст = (ЗначТД("C11")+ЗначТД("C12")+ЗначТД("C14")+ЗначТД("C15"))*ЗначТД("B16"); // 
ЯчейкаТД("C17").Текст = ЗначТД("B17")/ЗначТД("B13"); // 
ЯчейкаТД("C18").Текст = ЗначТД("C11")*0.01; // 
ЯчейкаТД("C19").Текст = ?(ЗначТД("C11")=0,0,SUM("C11:C18")); // 
ЯчейкаТД("C20").Текст = ЗначТД("C19")*ЗначТД("B3"); // 
ЯчейкаТД("C24").Текст = SUM("C20:C23"); // 
ЯчейкаТД("C25").Текст = ЗначТД("C24")*ЗначТД("B25"); // 
ЯчейкаТД("C26").Текст = SUM("C24:C25"); // 
ЯчейкаТД("C27").Текст = ЗначТД("C26")/1.18; // 
ЯчейкаТД("C34").Текст = ЗначТД("C26")+SUM("C29:C33"); // 
ЯчейкаТД("C35").Текст = ЗначТД("C34")/1.18; // 

Вставляем получившийся код в кофигураторе в процедуру " РассчитатьНаСервере()" нашего документа.

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

 

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

У нас есть пример расчета Полной Стоимости Кредита. Особого смысла переносить его в 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.

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

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

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

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

В ВЕРСИИ 2.11 Добавлена возможность сохранять и загружать данные проекта. Исправлена работа с процентами. Добавлены шаблоны справочника и документа

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

 

Другие разработки автора:

Статистика:
Просмотры 29521
Загрузки 2
Рейтинг 32
Создание 16.11.16 12:54
Обновление 06.11.22 20:57
№ Публикации 561890
Характеристики:
Теги

Excel расчет

Рубрики Загрузка и выгрузка в Excel
Кому Программист ,
Бизнес-аналитик ,
Бухгалтер
Тип файла Архив с данными
Платформа Платформа 1С v8.3 ,
Управляемые формы
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Платные (руб)
Код открыт Да
Наименование Файл Версия Размер
Пример. Полная стоимость кредита V1.14 .epf 26,07Kb 12 Скачать
Пример Расчёт электрических нагрузок V1.15 .epf 22,05Kb 12 Скачать
Excel Studio for 1C V2.11: Шаблон справочника и документа .cf 2.11 35,31Kb 15 Скачать
1. gubanoff 17.11.16 11:45 Сейчас в теме
Свежее, интересное решение. За новизну респект. Объем работы проделан тоже немалый. Но остается главный вопрос - зачем это нужно? Зачем переносить в 1С то, что в экселе работает и всех устраивает? Тем более в экселе, я так понимаю, гораздо легче будет что-то поправить, чем в 1С (скопировать столбцы, изменить формулы и т.п.). Пока представляется только как помощник переноса неких форм в 1С, не более.
2. Техподдержка 17.11.16 13:19
(1) gubanoff, Попробую перечислить преимущества, как это видится мне:
1. Не нужно открывать дополнительное окно, весь расчет делается на закладке того документа (справочника) где он нужен и хранится в нем же. (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
2. Интеграция с данными в 1С. Автоматическая загрузка курса, банковских ставок, стоимости услуг на текущие дату и прочее сможет значительно ускорить работу. На основании расчета в 1С могут создаваться новые документы, например спецификации (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
3. Скрытие формул от конечного пользователя.
4. Возможность добавления программной логике по контролю допустимости вводимых значений во избежание ошибок (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
5. Возможность программного скрытия части расчета и параметров в зависимости от набора прав (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
6. Возможность программного добавления (скрытия) областей в зависимости от условий расчета.(Требует дополнительной работы программиста по внедрению кода обработки в 1С).

Например, при добавлении операций на других станках появятся новые области с новыми параметрами.
При добавлении в расчет нескольких видов продукции появятся новые столбцы. При этом расчет в любом случае
будет работать корректно.
Список можно продолжать в зависимости от богатства фантазии. Но из списка видно, что основные преимущества дает именно интеграция в решение 1С.
dreadlord; +1 Ответить
4. Техподдержка 22.11.16 19:18
(1) По поводу редактирования. Я уже много раз переделывал изначальный расчет, ради которого это все и затевалось. Добавлялись новые возможные виды технологических операций, колонки с вариантами. Все для того, чтоб добиться универсальности. Переделывать было намного легче, чем Вы думаете. Изменения вносились в файл экселя, после чего он обрабатывался генератором. Причем изменения вносились специалистом, который и создал изначальный расчет.
dreadlord; +1 Ответить
3. SunShinne 22.11.16 14:59 Сейчас в теме
непонятно зачем но круто
5. dreadlord 29.11.16 10:47 Сейчас в теме
Отличное решение, особенно в части возможности юзания оперативных данных из 1С. Респект и уважуха. Плюс адназначна
6. Светлый ум 11.12.16 16:38 Сейчас в теме
Возникала такая задача пару лет назад - ценник оправданный
+1
7. Probot1c 04.02.17 06:43 Сейчас в теме
ДАвно пора скрестить 1с и офис
8. Serg_Tangatarov 18.11.18 10:52 Сейчас в теме
Решение однозначно достойно внимания. Но мы пошли еще дальше, написали табличный редактор в 1С, скоро буду выкладывать статью. Ниже ссылка на вебинар с решением, после 30 минуты буду подробно показывать работу этого редактора, называется табула. Excel там технически отсутствует, но есть табличный редактор сходный по функционалу с Excel.
https://youtu.be/QYztci2dcAE
9. German_Tagil 26.12.18 10:19 Сейчас в теме
мда у меня возникла задача быстро посчитать колонку в табличном документе не выгружая в Exel
- надо было сверить данные
И как всегда одно тянет за собой другое- я оказался здесь
вопрос

(8) Посмотреть бы как это работает
10. Serg_Tangatarov 26.12.18 14:25 Сейчас в теме
(9) могу провести демонстрацию, но лучше в январе :-)

Оставьте свое сообщение

См. также

Загрузка данных о продажах ОЗОН из API Ozon и Отчетов в формате *.xlsx в документ "Отчет комиссионера"

Обработки предназначены для следующих конфигураций: Бухгалтерия предприятия, редакция 3.0; Управление нашей фирмой, редакция 3.0; Управление торговлей, редакция 10.3; Управление торговлей, редакция 11

3600 руб.

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете ...

5400 руб.

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (аг...

3600 руб.

Универсальная загрузка остатков и цен поставщиков в 1С (УТ 11, КА 2, ERP 2.0) из файлов Excel, CSV, XML (YML и CML)

Обработка позволяет легко настроить загрузку прайс-листов и остатков поставщиков. Форматы файлов задаются для каждого поставщика отдельно. В настройках предусмотрена возможность гибкой обработки входящих данных (убрать лишние символы, перес...

12000 руб.

Загрузка ресурсных спецификаций из файла Excel (ERP)

Обработка «Загрузка ресурсных спецификаций из файла Excel, сформированного в САПР (ERP)» не требует изменений в конфигурации. Тестировалась на 1С:ERP Управление предприятием 2 (2.4.1.248)

15600 руб.

Загрузка прайс-листов в формате Excel

Внешние обработки для загрузки прайс-листов в формате Excel в конфигурации: Управление торговлей, редакция 11; Управление нашей фирмой, редакция 3.0; Бухгалтерия предприятия, редакция 3.0 без использования COM-объектов (установленного Excel...

6000 руб.

88005555256
Заказать звонок
support@infostart.ru
Telegram
Чат на сайте