компьютерный форум
Вернуться   Компьютерный форум > Программирование и вебстроительство > 1C (Все версии) > WEB расширение 1С 8.0

Ответ
 
LinkBack Опции темы Опции просмотра
Старый 18.09.2009, 21:46   #21
Пользователи
 
Регистрация: 04.12.2006
Сообщений: 119
По умолчанию

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

Вот что написал

if (((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value == null)
{
Response.Write("alert('Ошибка! При вводе количества используйте запятую');");
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Presentation = "0";
}
// ItemDataSource.GetDataFromForm();

Если разремарить ItemDataSource.GetDataFromForm() то возникает ошибка "Невозможно присвоить столбцу Количество пустое значение. Используйте DBNull.
Presentation на простых типах не имеет смысла. имхо надо Value менять.




Юрич вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
18.09.2009, 21:46
Техник
реклама
По умолчанию

Старый 19.09.2009, 18:59   #22
Пользователи
 
Регистрация: 16.07.2009
Сообщений: 26
По умолчанию

Цитата:
Presentation на простых типах не имеет смысла. имхо надо Value менять.
Это я понимаю, пробовал. Но результат тот же и с той же ошибкой.
"Если разремарить ItemDataSource.GetDataFromForm() то возникает ошибка "Невозможно присвоить столбцу Количество пустое значение. Используйте DBNull."
"Value не может быть null." Как ему присвоить не null, а "0"?
avi-murom вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 20.09.2009, 20:16   #23
Пользователи
 
Регистрация: 04.12.2006
Сообщений: 119
По умолчанию

Цитата:
Это я понимаю, пробовал. Но результат тот же и с той же ошибкой.
"Если разремарить ItemDataSource.GetDataFromForm() то возникает ошибка "Невозможно присвоить столбцу Количество пустое значение. Используйте DBNull."
"Value не может быть null." Как ему присвоить не null, а "0"?
if (((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value == null)
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value = (decimal)0;
Юрич вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 21.09.2009, 06:07   #24
Пользователи
 
Регистрация: 16.07.2009
Сообщений: 26
По умолчанию

Цитата:
if (((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value == null)
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value = (decimal)0;
Сделал. ItemDataSource.GetDataFromForm() теперь не ругается. У меня была такая строка, но decimal я писал с большой буквы. В чем разница?
На форме как пропадала надпись в колонке Количество при переходе на следующюю строку, так и пропадает. Вот код:

if (((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value == null)
{
Response.Write("alert('Ошибка! При вводе количества используйте запятую');");
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value = (decimal)0;
ItemDataSource.GetDataFromForm();
}

Добавлять ((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Presentation = "0" пробовал. Не помогает.
avi-murom вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 21.09.2009, 20:57   #25
Пользователи
 
Регистрация: 04.12.2006
Сообщений: 119
По умолчанию

Цитата:
Сделал. ItemDataSource.GetDataFromForm() теперь не ругается. У меня была такая строка, но decimal я писал с большой буквы. В чем разница?
На форме как пропадала надпись в колонке Количество при переходе на следующюю строку, так и пропадает. Вот код:

if (((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value == null)
{
Response.Write("alert('Ошибка! При вводе количества используйте запятую');");
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value = (decimal)0;
ItemDataSource.GetDataFromForm();
}

Добавлять ((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Presentation = "0" пробовал. Не помогает.
может дело в свойстве колонки формат строки? Если формат не задан - то ноль не отображается.
Попробуй что-нибудь типа 0.000
Юрич вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 23.09.2009, 09:59   #26
Пользователи
 
Регистрация: 16.07.2009
Сообщений: 26
По умолчанию

Цитата:
может дело в свойстве колонки формат строки? Если формат не задан - то ноль не отображается.
Попробуй что-нибудь типа 0.000
Попробовал и 0,000 и #,### не помогло.
Есть одно но. Нужно ли задавать у данной колонки AvailableType, Type и TypeRestriction?
Они у меня пустые. Тип берется такой же как в 1С.
avi-murom вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 23.09.2009, 12:13   #27
Пользователи
 
Регистрация: 16.07.2009
Сообщений: 26
По умолчанию

Цитата:
Попробовал и 0,000 и #,### не помогло.
Есть одно но. Нужно ли задавать у данной колонки AvailableType, Type и TypeRestriction?
Они у меня пустые. Тип берется такой же как в 1С.
УРА. Нашел ошибку у себя. У колонки Количество было установлено PresentationField, как не представление. Работать стало после очистки параметра. В общем похоже, как это в самой 1С8 делается.
Вот, что получилось для двух колонок в одной таблице с установленным параметром UseValueChangedEvent:

protected void V8EditGrid1_ValueChanged(object sender, V8EditGridValueChangedEventArgs eventArgs)
{
if (eventArgs.ColumnName == "Номенклатура")
{
V8DbSelectCommand command = new V8DbSelectCommand();
command.Connection = ItemDataSource.Connection;
command.CommandType = CommandType.Text;
command.CommandText = @"ВЫБРАТЬ ЕдиницыИзмерения.Ссылка, ЕдиницыИзмерения.Наименование, ЕдиницыИзмерения.Коэффициент ИЗ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура ПО ЕдиницыИзмерения.Владелец = Номенклатура.Ссылка И ЕдиницыИзмерения.ЕдиницаПоКлассификатору = Номенклатура.БазоваяЕдиницаИзмерения ГДЕ ЕдиницыИзмерения.Владелец = &Наимен";
command.Parameters.Add("Наимен", ((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[1]).Value);
command.Connection.Open();
using (V8DataReader reader = (V8DataReader)command.ExecuteReader())
{
while (reader.Read())
{
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[4]).Value = reader.GetValue(0);
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[4]).Presentation = reader.GetValue(1).ToString();
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[5]).Value = reader.GetValue(2);
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[2]).Value = null;
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[2]).Presentation = "";
ItemDataSource.GetDataFromForm();
}
}
command.Connection.Close();
}
else
{
if (((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value == null)
{
Response.Write("alert('Ошибка! При вводе количества используйте запятую');");
((V8EditGridCell)V8EditGrid1.Items[V8EditGrid1.SelectedIndex].Cells[3]).Value = (decimal)0;
}
ItemDataSource.GetDataFromForm();
}
}

Большое спасибо Юричу.
avi-murom вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.



Текущее время: 00:28. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Content Relevant URLs by vBSEO 3.5.0 RC2