Vofka, как я и писал, строка не записывалась из-за того, что я не заносил значение в поле, обязательное для заполнения "ID". Приведенный ниже код позволил записывать данные в таблицу БД, с учетом неполных данных. Если данные отсутствуют - запись в БД не происходит.
Если ПустоеЗначение(ТЗКонтрагенты.Owner1CID)=0 Тогда Команда = Команда + "CAST('"+ПолучимГУИДSQL(ТЗКонтрагенты.Owner1CID) +"' as UNIQUEIDENTIFIER), "; Иначе Команда = Команда + "Null, "; КонецЕсли;
Если ПустоеЗначение(ТЗКонтрагенты.Name)=0 Тогда Команда = Команда + "CAST('"+ТЗКонтрагенты.Name +"' as CHAR(120)), "; Иначе Команда = Команда + "Null, "; КонецЕсли;
Если ПустоеЗначение(ТЗКонтрагенты.UNP)=0 Тогда Команда = Команда + "CAST('"+ТЗКонтрагенты.UNP +"' as CHAR(13)), "; Иначе Команда = Команда + "Null, "; КонецЕсли;
Если ПустоеЗначение(ТЗКонтрагенты.OKPO)=0 Тогда Команда = Команда + "CAST('"+ТЗКонтрагенты.OKPO +"' as CHAR(12)), "; Иначе Команда = Команда + "Null, "; КонецЕсли;
Если ПустоеЗначение(ТЗКонтрагенты.InThePersonOf)=0 Тогда Команда = Команда + "CAST('"+ТЗКонтрагенты.InThePersonOf +"' as CHAR(8)), "; Иначе Команда = Команда + "Null, "; КонецЕсли;
Если ПустоеЗначение(ТЗКонтрагенты.FIO)=0 Тогда Команда = Команда + "CAST('"+ТЗКонтрагенты.FIO +"' as CHAR(40)), "; Иначе Команда = Команда + "Null, "; КонецЕсли;
Если ПустоеЗначение(ТЗКонтрагенты.Base)=0 Тогда Команда = Команда + "CAST('"+ТЗКонтрагенты.Base +"' as CHAR(5)), "; Иначе Команда = Команда + "Null, "; КонецЕсли;
Команда = Команда + "CAST('"+ТЗКонтрагенты.Status +"' as SMALLINT), CAST('"+СокрЛП(РабочаяДата())+"' as DATETIME))";
logist, не записывать конечно правильно. Но как реализовать? Можно записывать обязательные поля, а потом по ним искать и дописывать остальные данные. Может есть способ оптимальней?
Наверное было бы правильно в таком случае писать Null, если это допускается. Но как это предусмотреть в конструкции:
cmd.Commandtext="INSERT INTO tbl_Account (ID, Account1CID, Owner1CID) |VALUES (NEWID(), |CAST('"+ПолучимГУИДSQL(ТЗКонтрагенты.Account1CID)+"' as UNIQUEIDENTIFIER), |CAST('"+ПолучимГУИДSQL(ТЗКонтрагенты.Owner1CID)+"' as UNIQUEIDENTIFIER) |)";
Удалось записать. Всю цепочку действий не восстановлю. Думаю, что ключевым моментом было то, что в таблице есть поле обязательное для заполнения -уникальный идентификатор строки таблицы. Без его заполнения строка не записывалась. Буду разбираться дальше. Спасибо всем за участие!
А как быть, если элемент, УИД которого надо писать, не выбран?
sava1, как я понял таким образом будет создано и записано в таблицу новое уникальное значение. Используя свой уникальный код потом можно определить какому элементу принадлежит запись. Потом нужно будет по этому значению находить эту строку и вносить изменения в данные. Контрагент записан со всеми своими данными и при изменении их в 1с нужно вносить изменения и в БД.
Vofka, попробовал так:
ГУИДКонтрагента = ПолучимГУИДSQL(ТЗКонтрагенты.Account1CID); cmd.Commandtext ="INSERT INTO tbl_Account (Account1CID) VALUES (CAST('"+ГУИДКонтрагента+"' as UNIQUEIDENTIFIER))";
Получил:
cmd.Execute(); {D:\WORK\ИНТЕРСТАЛЬ\EXTFORMS\SQL.ERT(294)}: Microsoft OLE DB Provider for SQL Server: Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.
Необходимо записывать данные во внешние таблицы MS SQL 2005. В таблице тип данных поля, в которое необходимо записывать данные - уникальный идентификатор. В 7-ке я формирую идентификатор функцией ПолучимГУИДSQL(), в результате работы которой получаю строковое значение вида: "16700000-0001-0000-0000-000000000000"
Соединение.BeginTrans(); пСтрока = ПолучимГУИДSQL(ТЗКонтрагенты.Account1CID); Пока ТЗКонтрагенты.ПолучитьСтроку() = 1 Цикл cmd.Parameters("@Account1CID").Value = ПолучимГУИДSQL(ТЗКонтрагенты.Account1CID); cmd.Execute(); КонецЦикла;
При выполнении кода возникает ошибка: cmd.Execute(); {D:\WORK\EXTFORMS\SQL.ERT(291)}: Microsoft OLE DB Provider for SQL Server: Conversion failed when converting from a character string to uniqueidentifier.
1С 8.2 "Управление небольшой фирмой 1.4". С 8-кой дел еще не имел, тем более с упр. формами. Необходимо на базе существующего документа "Заказ покупателя" создать документ "Коммерческое предложение". Думал как в 7-ке скопировать документ, переделать печатные формы, изменить интерфейс. Но тут не так все просто. Документ я скопировал, запретил его проведение, убрал движения, в свойствах динамического списка убрал "Произвольный запрос", поставил "ДинамическоеСчитываниеДанных". Не знаю с чем еще придется столкнуться, но сейчас при попытке ввести новый документ выдается ошибка:
{ОбщийМодуль.УправлениеСвойствамиСлужебный.Модуль(434)}: Поле об`єкту не виявлено (Документ_КомерческоеПредложение) Возврат Справочники.НаборыДополнительныхРеквизитовИСведений[ИмяЭлемента];
В подсистеме "Администрирование" есть возможность просматривать элементы данного справочника. Как создать для нового документа элемент справочника "НаборыДополнительныхРеквизитовИСведений"? Может есть
Есть процедурный кабинет. Работает с 8.00 до 18.00. Есть перерыв на обед, перерыв для наведения порядка... и т.д. На время перерыва нельзя назначать процедуры. Есть документ, который сначала должен провести анализ занятости кабинета, с учетом указанных перерывов, и дать пользователю информацию для назначения процедуры на свободное время (интервал времени на которое назначена процедура в дальнейшем будет тоже учитываться при очередном назначении). Т.о. задача стоит в том, чтобы пользователь мог назначать процедуры на время, когда кабинет свободен.
Имеется сильно доработанная конфигурация. Есть справочник "Кабинет". Реквизиты: время работы С, По и перерыв С По, каждый реквизит в единственном экземпляре. Необходимо сделать так, чтобы можно было произвольно добавлять интервалы перерывов, занятости кабинета (кому-то назначено время приема). Как сие грамотнее реализовать?
Отказ от ПУБ вызван тем, что эта организация - санаторий, и для санатория есть переделанная конфигурация с общепитом, путевками... Оперативный учет меня как раз и пугает - усложняет процесс переноса. Универсал посмотрю (возможно ли им совершить такой перенос? ПУБ -> Бух))
Предложили подумать над такой задачей. Организация имеет конфигурацию ПУБ 041. База ведется давно, весит около 3Гб. Нужно перевести их на Бух. 291. Заново начинать не желают - нужно сохранить данные по зарплате. Задача не тривиальная, конечно... Есть какие-нибудь соображения?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!