Автор Тема: Как вы сделали обработку строки ТЧ?  (Прочитано 33110 раз)

0 Пользователей и 1 Гость просматривают эту тему.

DaMa

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Как вы сделали обработку строки ТЧ?
« Ответ #21 : 06 Июль 2009 Понедельник 15:05:13 »
Спасибо!! Работает.

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Вот как можно вывести итог по колонке тобличной части
« Ответ #20 : 02 Июль 2009 Четверг 13:32:24 »
Итог у нас будет выводится в объект Label. Создаем его где-нибудь на форме.

В событие которое срабатывает при обновлении странички добавляем следующий код, который просто пробегает в цикле по всем строкам табличной части и суммирует их.
v8cell.Cells[5] - это 5-я колонка таблицы которую суммируем.

protected void V8EditGrid1_PreRender(object sender, EventArgs e)
{
decimal i_tmp = 0;
foreach (V8GridItem v8cell in V8EditGrid1.Items)
{
i_tmp = i_tmp + (decimal)((V8EditGridCell)(v8cell.Cells[5])).Value;
}
Label1.Text = i_tmp.ToString();//Выводим результат на форму в объект Label1
}

Для нормальной работы этот код еще нужно добавить в событие V8EditGrid1_ValueChanged, чтобы при изменении данных менялся итог.

DaMa

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
RE: Как вы сделали обработку строки ТЧ?
« Ответ #19 : 02 Июль 2009 Четверг 13:31:16 »
Табличная часть документа (Заказ покупателя - УПП). При том, что Сумму по каждой строке я получаю способом, указанном Вами выше.

protected void v8EditGrid1_ValueChanged(object sender, V8EditGridValueChangedEventArgs eventArgs)
{
((V8EditGridCell) this.V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[7]).Value=
(decimal) ((V8EditGridCell) this.V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[4]).Value * (decimal) ((V8EditGridCell)this.V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[6]).Value;
}

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
RE: Как вы сделали обработку строки ТЧ?
« Ответ #18 : 02 Июль 2009 Четверг 13:30:31 »
Ок, только уточните, в какой табличной части нужно суммировать, т.е. в журнале документов, справочник или табличная часть в форме ?

DaMa

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
RE: Как вы сделали обработку строки ТЧ?
« Ответ #17 : 02 Июль 2009 Четверг 13:30:02 »
Да.. как вариант... Уважаемый Admin, не могли бы Вы написать как подсчитывали хотя бы для текущей страницы.

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
RE: Как вы сделали обработку строки ТЧ?
« Ответ #16 : 02 Июль 2009 Четверг 13:29:33 »
Мне бы тоже хотелось узнать, как можно попроще суммировать колонки, у меня так и не получилось это сделать.
Пробовал делать суммированием через разные события при отображении данных, сначала я подумал что все заработало, но когда таблица у меня была уже на нескольких стриницах, оказалось что суммируется у меня только одна текущая страница, а как вычислить итог по колонке с учетом всех данных непонятно.
Как вариант, можно сделать функцию в 1С которая считает нужный итог и в нужный момент просто вызывать функцию 1С из ASP.NET и результат присваивать туда где его нужно вывести.

DaMa

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
RE: Как вы сделали обработку строки ТЧ?
« Ответ #15 : 02 Июль 2009 Четверг 13:29:03 »
Как рассчитать Итого - (V8TextBox) - суммировать значение Сумма каждой строки табличной части?

mugg

  • Newbie
  • *
  • Сообщений: 26
    • Просмотр профиля
Чтобы при выборе номенклатуры заполнялась ставка НДС, счет учета. При изменении ставки НДС чтобы рассчитывалась сумма НДС.

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Надо подумать...
А если не секрет, зачем ты передаешь строки табличной части в 1С ?
(Может это можно решить более простым способом)

mugg

  • Newbie
  • *
  • Сообщений: 26
    • Просмотр профиля
Можно ли как-нибудь передать в 1С строку табличной части?
Я пока использую такую конструкцию:
using (V8DbConnection myConnect = ItemDataSource.Connection)
{
myConnect.Open();
try
{
using (ComObject obj = ItemDataSource.GetObject())
{
V8.Call(myConnect, myConnect.Connection, "WebПолучитьПараметрыНоменклатуры", obj, V8EditGrid1.SelectedIndex);
ItemDataSource.SetFromObject(obj);
ItemDataSource.SetDataToForm();
}
}
finally
{
myConnect.Close();
}

В 1С:
Процедура WebПолучитьПараметрыНоменклатуры(Объект, Строка)
ТекСтрока = Объект.ТМЦ[Строка];
ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(ТекСтрока, Объект);
...
КонецПроцедуры

Как бы сразу вызывать процедуры модуля ОбработкаТабличныхЧастей, передавая параметры сразу из ASP.Net, т.е. объект и строку табличной части?

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Цитировать
Кроме этого, оказывается еще надо свойство UseValueChangedEvent тоже переключить в True

Точно, я про UseValueChangedEvent в ТЧ совсем забыл :) Я последнее время часто пользуюсь объектами DropDownList - у них точно также, но только одно свойство нужно задавать AutoPostBack.

Цитировать
Только есть неудобства: во-первых, не реагирует на клавишу "Enter", переходить на следующую ячейку нужно клавишей "Tab".
Во-вторых, после обновления страницы курсор приходится мышкой в нужную ячейку установить. Похоже надо написать код, чтобы запоминалось, в какой ячейке находился курсор и снова его восстанавливать.

Я с этим пока еще не разбирался, если получиться сделать, напиши как сделал  :)

mugg

  • Newbie
  • *
  • Сообщений: 26
    • Просмотр профиля
Спасибо! Кроме этого, оказывается еще надо свойство UseValueChangedEvent тоже переключить в True
Только есть неудобства: во-первых, не реагирует на клавишу "Enter", переходить на следующую ячейку нужно клавишей "Tab".
Во-вторых, после обновления страницы курсор приходится мышкой в нужную ячейку установить. Похоже надо написать код, чтобы запоминалось, в какой ячейке находился курсор и снова его восстанавливать.

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Это нормально, просто у этого поля не включено свойство "AutoPostBack":
AutoPostBack- Автоматическая отправка данных на сервер при изменении значения.
Сделай: AutoPostBack = True

Вот как добраться до поля табличной части в V8EditGrid:
В свойствах V8EditGrid заходишь в Columns
Скорей всего в окне Members будет пусто, добавляешь сюда поля которые должны быть в табличной части. И уже тут у нужного поля, для которого должно срабатывать событие V8EditGrid1_ValueChanged устанавливаешь: AutoPostBack = True
« Последнее редактирование: 02 Июль 2009 Четверг 13:21:33 от admin »

mugg

  • Newbie
  • *
  • Сообщений: 26
    • Просмотр профиля
Почему-то у меня не входит в эту функцию:
protected void V8EditGrid1_ValueChanged 
На вкладке Events ссылка на эту функцию есть, но при изменении значения в ячейке функция не вызывается

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Это да, чтобы эту строчку получить, я несколько часов потратил сидя в отладчике :)

mugg

  • Newbie
  • *
  • Сообщений: 26
    • Просмотр профиля
RE: В моей книге по WEB-расширениию как раз есть перечень свойств7 мес. назад     
Есть у меня эта книга. Но там неподробно! Например, для V8EditGrid указано свойство Items, а его свойств нет. Как я мог догадаться, что такая конструкция вообще существует:

V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[4]).Value =

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
В моей книге по WEB-расширениию как раз есть перечень свойств, методов, событий для некоторых объектов, если нужно, могу тут выложить, только напиши, для какого объекта?

mugg

  • Newbie
  • *
  • Сообщений: 26
    • Просмотр профиля
RE: По поводу книг для WEB-Расширения
« Ответ #4 : 02 Июль 2009 Четверг 13:14:48 »
Цитировать
А эта книга "Профессиональная разработка в 1с:8" для WEB-Расширения 1С8 ?

Там есть глава "Web-расширение". Только информация там похоже неактуальна в некоторой части.
На диске ИТС есть несколько статей (раздел Методическая поддержка 8.0 -> Метод. рекомендации по конфигурированию -> Web-Расширение), в том числе статья по программированию вычисляемых ячеек в V8EditGrid.
А так, задница полная, да. Хоть бы перечень всех методов и свойств опубликовали.

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Для объекта V8EditGrid1, добавляем событие ValueChanged.
При изменении любого значения в табличной части, будет срабатывать эта формула:
Сумма(Cells[4]) = Балансовая(Cells[2]) - Амортизация(Cells[3])
Ниже пример процедуры:

protected void V8EditGrid1_ValueChanged(object sender, V8EditGridValueChangedEventArgs eventArgs)
{
  ((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[4]).Value = (decimal)((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[2]).Value - (decimal)((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value;
}

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
По поводу книг для WEB-Расширения
« Ответ #2 : 02 Июль 2009 Четверг 13:12:11 »
Цитировать
Есть книга "Профессиональная разработка в 1с:8" 2007 года, тамошняя методика не подходит (предлагает использовать объект V8LineDataSource, у меня такого вообще нету!)

А эта книга "Профессиональная разработка в 1с:8" для WEB-Расширения 1С8 ?

С книгами и документацией по WEB-Расширению совсем беда, в интернете по крохам собираю хоть какую ту информацию как с ним работать, остальное все сам методом "тыка" изучаю
Я когда покупал WEB-Расширение у франчайзи, хотел кое-что спросить, с чего хоть начать, они говорят, что сами незнают, ниразу на WEB-Расширении ничего не писали и у них нет такого человека который знает и 1С8 и ASP.NET, поэтому ничем помочь не могут. С WEB-Расширением у меня в комплекте шла одна тоненькая книга:
"1С: Предприятие 8.0 WEB-Расширение 1.1 руководство по установке и использованию" - Но тут настолько все кратко описано, что многое понять очень трудно.

По мере изучения WEB-Расширения, я буду выкладывать некоторые примеры тут на форуме.