Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 466
от 09.04.2007, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 362, Экспертов: 55
В номере:Вопросов: 5, Ответов: 19


Вопрос № 80979: Здравствуйте Уважаемые эксперты! Помогите решить проблему. Хотим приобрести сканеры для штрих-кодов. Некоторые используют сканер от Metrologic а другие от Symbol. В чем их различия? Какую из них использовать в 1С и Почему? Заранее благо...
Вопрос № 80983: Здравствуйте уважаемые эксперты! Недавно спрашивал у вас по настройкам терминального режима работы 1С вер.8. Новый вопрос: на некоторых раб.станциях не виден свой принтер, причём, он (свой принтер) расшарен. Когда в отчётах пытаюсь его установить, си...
Вопрос № 80986: Вопрос по 1С 7.7 Услуги+Производство+Бухгалтерия. Имеется встроенная обработка, экспортирующая платежные поручения в клиент-банк. Необходимо поменять значение Реквизита "ИмяФайлаВыгрузки (реквизит имеет текстовый тип),Пользователь выбирает путь ...
Вопрос № 81046: Здравствуйте эксперты! Данная в приложении внешняя обработка создает документ и сразу его сохраняет. Как мне сделать чтобы документ создавался, заполнялся (так же), открывался, но сразу не сохранялся, а только после этого уже по нажатии кнопки ОК в ф...
Вопрос № 81078: Здравствуйте! Скажите пожайлуста как обработать такую строку и записать в ТаблицуЗначений (ТЗ) "1",11111,"01.01.2007","ИВАНОВ ИВАН ИВАНОВИЧ, д.р. 22.08.1963" Необходимо чтобы в ТЗ были отражены...

Вопрос № 80.979
Здравствуйте Уважаемые эксперты! Помогите решить проблему. Хотим приобрести сканеры для штрих-кодов. Некоторые используют сканер от
Metrologic а другие от Symbol. В чем их различия? Какую из них использовать в 1С и Почему?

Заранее благодарю!!!
Отправлен: 04.04.2007, 08:07
Вопрос задал: Рубик (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Яна
Здравствуйте, Рубик!
Есть оборудование с которым 1С "умеет" работать, а есть с которым "не умеет". Если у Вас типовая конфигурация, то в мастере настройки торгового оборудования можно посмотреть с каким оборудованием ее "научили" работать разработчики, а с каким "не научили". В случае отсутствия оборудования в списке может оказаться, что Вам "учить" прийдется самостоятельно.
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 04.04.2007, 08:27
Оценка за ответ: 3
Комментарий оценки:
Сканер там есть. Но какую из них удобнее использовать Metrologic или Symbol? и Почему?

Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Рубик!

Не знаю, что такое Symbol, но с Metrologic'ами 1C работает без проблем. Чтобы не было лишних проблем, советую использовать их.
Кстати, в "Настройках торгового оборудования" нет настроек для сканеров Symbol.
Ответ отправил: Краюшкин Игорь Валерьевич (статус: 7-ой класс)
Ответ отправлен: 04.04.2007, 13:59
Оценка за ответ: 5

Отвечает: Velial
Здравствуйте, Рубик!
Я бы посоветовал Metrologic. С ними 1С работает замечательно и настраиваются они как стандартный сканер, т.е. нет лишних проблем. Если нужна будет помощь в настройке пиши в личку. Сталкивался с 2-мя Symbol'ами - не понравилось. Проблем больше.
Удачи!
---------
Можно сделать защиту от дурака, но только от неизобретательного /Закон Нейсдра/
Ответ отправил: Velial (статус: Студент)
Ответ отправлен: 06.04.2007, 12:43
Оценка за ответ: 5
Комментарий оценки:
Спасибо!


Вопрос № 80.983
Здравствуйте уважаемые эксперты! Недавно спрашивал у вас по настройкам терминального режима работы 1С вер.8. Новый вопрос: на некоторых раб.станциях не виден свой принтер, причём, он (свой принтер) расшарен. Когда в отчётах пытаюсь его установить, система ругается: вы не имеете права доступа к этому принтеру. Пока (временно) направляем печать на принтеры, установленные на соседних компах. Из 20 раб.мест 3 не подключились успешно. Почему, ведь на всех компах одинаковые настройки?
Отправлен: 04.04.2007, 09:11
Вопрос задал: Шалагин Владимир Анатольевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Kim
Здравствуйте, Шалагин Владимир Анатольевич!
При подключению к терминальному серверу, в программе Remoute Desktop Connection-
Кнопка Options - Закладка Local Resources - поставьте галочку возле Принтеры
она позволяет автоматически подключать локальный принтер по умолчанию к терминальной сессии.
Но есть проблема, если вы используете принтеры Canon.
У них криво написаны драйвера и постоянно возникают проблемы.

Удачи!!
Ответ отправил: Kim (статус: 2-ой класс)
Ответ отправлен: 04.04.2007, 09:17

Отвечает: Яна
Здравствуйте, Шалагин Владимир Анатольевич!
1. Попробуйте зайти под разными пользователями. Если принтер недоступен для всех пользователей, то нужно смотреть настройки операционной системы. Если под некоторыми доступен, а под другими нет - права пользователей в 1С.
2. А модели принтеров отличаются? Возможно нужно переставить драйвера.
Драйвера к принтеру устанавливались до или после 1С. На всех машинах было одинаково?
3. А из других программ на эти принтера удается печатать? Под тем же пользователем операционной системы.
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 04.04.2007, 09:20


Вопрос № 80.986
Вопрос по 1С 7.7 Услуги+Производство+Бухгалтерия. Имеется встроенная обработка, экспортирующая платежные поручения в клиент-банк. Необходимо поменять значение Реквизита "ИмяФайлаВыгрузки (реквизит имеет текстовый тип),Пользователь выбирает путь к файлу, но при повторном запуске этой обработки в реквизите старые значения. Подскажите как сделать так чтобы пользователю не пришлось заново выбирать путь.

Смотрела код. Там В процедура ПриОткрытии() Запускается с параметром Настройка.
Если Настройка=1, то ставятся старые Значения. Я не нашла в каком месте Настройка принимает значение =1 до запуска процедуры ПриОткрытии() . И откуда берутся старые значения реквизита "ИмяФайлаВыгрузки"?

Приложение:

Отправлен: 04.04.2007, 09:24
Вопрос задала: Оксана/kasy (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Яна
Здравствуйте, Оксана/kasy!
Во многих отчетах есть возможность сохранения настроек. Я думаю это как раз тот случай. Нужно сохранить настройки отчета, путь к файлу вероятно является одной из них. А потом восстановить сохраненную настройку.
Кроме того, Вам ничто не мешает в этом месте кода изменить файл по умолчанию.
Настройка=0, это если по умолчанию. Путь к файлу в виде строки (в кавычках), можно вместо того, что там написано, написать ИмяФайлаВыгрузки="Ваш путь", пример пути "C:myfile.txt". Т.е. путь должен быть полным.
Это удобно, если Вам всегда нужны одни и те же значения, если разные - то нужно сохранить несколько различных настроек. Это делается в пользовательском режиме в форме обработки должны быть соответствующие кнопки.
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 04.04.2007, 09:36
Оценка за ответ: 4

Отвечает: Starhan
Здравствуйте, Оксана/kasy!

Это просто объявляете переменную в глобальном модуле (допустим ПутьКФайлу)

и запоминаете ее в процедуре ПоКнопкеОК() или Сформировать() вообщем в той которая у вас отрабатывает согласие пользователя.

а в процедуре Приокрытии() вытаскиваете оттуда значение
(только сделайте проверку на не пустое значение)

Если вы хотите сохранить путь к фаулу В случае выхода пользователя из сеанса то
Путь к файлу можно сохранить через метод СохранитьЗначение()
а вытащить через метод ВосстановитьЗначение() (подробности смотрите в синтаксис помошнике или в оф. руководстве "Описание встроеннго языка ч1" глава "Системные процедуры и функции " стр 136)

Но это Путь Самурая Не боящегося трудностей на самом деле все еще проще ;) там есть кнопка Сохранить настройку ))

Нажимаете на нее соглашаетесь и все при соедующем открытии все будет как было))

---------
Победа не должна приводить к зазнайству, а поражение к малодушию.
Ответ отправил: Starhan (статус: 7-ой класс)
Ответ отправлен: 04.04.2007, 09:47

Отвечает: BigHard
Здравствуйте, Оксана/kasy!
к ответам предыдущих экспертов можно еще добавить, что старые значения вытаскиваются при открытии с помощью функции Каталогпользователя()-Строковое значение, содержащее имя рабочего каталога пользователя.
оттуда и путь для выгрузки и загрузки, а имя файла указано явно - ()+1c_to_kl.txt
---------
Чем отличается чайник от программиста: У чайника в одном килобайте 1000 байт, а у программиста в одном километре 1024 метра
Ответ отправил: BigHard (статус: 7-ой класс)
Ответ отправлен: 04.04.2007, 10:24
Оценка за ответ: 4

Отвечает: Ovr1970
Здравствуйте, Оксана/kasy!
Чтобы сохранить настройку нужно воспользоваться кнопкой панели отчета или меню "Действия->Сохранить настройку"
Соответственно если настройка сохранена, то автоматически параметр настройка станет равным 1. Настройка сохраняется для каждого пользователя в отдельности.
Ответ отправил: Ovr1970 (статус: Студент)
Ответ отправлен: 04.04.2007, 11:48
Оценка за ответ: 5
Комментарий оценки:
Спасибо за подробный и развернутый ответ.


Вопрос № 81.046
Здравствуйте эксперты! Данная в приложении внешняя обработка создает документ и сразу его сохраняет. Как мне сделать чтобы документ создавался, заполнялся (так же), открывался, но сразу не сохранялся, а только после этого уже по нажатии кнопки ОК в форме документа сохранялся (проводился)?

Приложение:

Отправлен: 04.04.2007, 15:17
Вопрос задала: Darina (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Яна
Здравствуйте, Darina!
В конце есть строка Док.Записать() - эта команда сохраняет документ, если ее удалить - документ сохраняться не будет.
Чтобы это строка сработала в другой процедуре (при нажатии на кнопку), нужно переменную Док описать вне процедуры (вверху модуля) или сделать реквизитом обработки.
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 04.04.2007, 15:25

Отвечает: Dimaxx
Здравствуйте, Darina!
Я в семерке не силен но попробуй так.
Процедура ВыбратьФайл(Конт) Экспорт
Перем Каталог, ИмяФайла, СтрокаФайлов;
СтрокаФайлов="Файлы Excel (*.xls)|*.xls";
ИмяФайла=Конт.ИмяФайла;
Если ФС.ВыбратьФайл(0, ИмяФайла, Каталог,"Выберите файл", СтрокаФайлов)=1 Тогда
Конт.ИмяФайла=Каталог+ИмяФайла;
КонецЕсли;
КонецПроцедуры
//_____________________________________________________________________________

Процедура Сформировать()
Док=СоздатьОбъект("Документ.ПоступлениеТовара");
Если Док.КоличествоСтрок()>0 Тогда
Если Вопрос("Таблица не пуста. Очистить ?",4)=6 Тогда
Док.УдалитьСтроки();
КонецЕсли;
КонецЕсли;
Док.Новый();
Если ФС.СуществуетФайл(ИмяФайла)=1 Тогда
ОкноExcel = СоздатьОбъект("Excel.Application");
ОкноExcel.Workbooks.Add(ИмяФайла);
КолвоОшибок=0;
Для Ном=12 По 1000 Цикл
Состояние("Обрабатываем строку "+Ном);
Тов=СокрЛП(ОкноExcel.Cells(Ном,1).Value);
Если ПустаяСтрока(Тов)=1 Тогда
КолвоОшибок=КолвоОшибок+1;
Если КолвоОшибок=10 Тогда
Прервать;
КонецЕсли;
Продолжить;
Иначе
КолвоОшибок=0;
КонецЕсли;
Док.НоваяСтрока();
Спр=СоздатьОбъект("Справочник.Номенклатура");
Если Спр.НайтиПоНаименованию(СокрЛП(ОкноExcel.Cells(Ном,2).Value),0,1)=1 Тогда
Сообщить("Для элемента "+СокрЛП(ОкноExcel.Cells(Ном,2).Value)+" только обновляем Закупочную цену", "!");
Док.Товар=Спр.ТекущийЭлемент();
Иначе
Спр.ИспользоватьДату(РабочаяДата());
Спр.Новый();
Спр.Наименование=СокрЛП(ОкноExcel.Cells(Ном,2).Value);
Спр.ЕдиницаИзмерения=Константа.ОсновнаяЕдиницаИзмерения;
Спр.Записать();
Сообщить("Создали Номенклатуру с наименованием "+СокрЛП(ОкноExcel.Cells(Ном,2).Value), "I");
Если Спр.НайтиПоНаименованию(СокрЛП(ОкноExcel.Cells(Ном,2).Value),0,1)=1 Тогда
Док.Товар=Спр.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
Док.Количество=Число(СокрЛП(ОкноExcel.Cells(Ном,3).Value));
Док.Цена=Число(СокрЛП(ОкноExcel.Cells(Ном,7).Value))/Число(СокрЛП(ОкноExcel.Cells(Ном,3).Value));
Док.Сумма=Число(СокрЛП(ОкноExcel.Cells(Ном,7).Value));
Док.ЦенаРозничная=Число(СокрЛП(ОкноExcel.Cells(Ном,5).Value));
Док.ЦенаРозн=Док.Товар.ЦенаРозн.Получить(РабочаяДата());
КонецЦикла;
//Вот здесь документ записывается нужно сделать вот так.
ОткрытьФорму(Док.ТекущийДокумент());
ОкноExcel.Workbooks.Close();
ОкноExcel.DisplayAlerts = 0;
ОкноExcel.Quit();
Предупреждение("Загрузка из файла закончена !" ,10);
КонецЕсли;
КонецПроцедуры
Ответ отправил: Dimaxx (статус: 3-ий класс)
Ответ отправлен: 04.04.2007, 15:27
Оценка за ответ: 3
Комментарий оценки:
Извините, не то

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Darina!
Если документ не имеет табличной части, то можно сделать так (вырезка из моей обработки):
Конт="";
ОткрытьФорму("Документ.ЧекИнкасатора",Конт);
Конт.ДатаДок=ТЗ.ПолучитьЗначение(Строк,"Дата");//
Конт.Склад=Склад;
Конт.Инкасация=ТЗ.ПолучитьЗначение(Строк,"Сумма");
Конт.Основание=Прав(СокрЛП(СтрФайл),50);
Конт.Форма.Обновить(0);

Если документ имеет табличную часть, то так не получится. Нужно данные табличной части запихнуть в ТЗ, саму ТЗ и данные шапки запихнуть в СписокЗначений. При открытии формы нового документа вызывается процедура ВводНового() и в этой процедуре можно анализировать параметр формы и строить документ.
Пример: часть обработки строит Сп из ТЗ
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("ТМЦ","Справочник.Номенклатура");
ТЗ.НоваяКолонка("КолвоНал","Число",15,3);
ТЗ.НоваяКолонка("КолвоБезНал","Число",15,3);
Cmd.CommandText="
|SELECT b.id_azs, b.n_report, b.id_typ_sale as typs_sale, b.id_tovar, b.volume, b.sum, b.price
|FROM smena b";
Rs=CreateObject("ADODB.RecordSet");
Rs=Cmd.Execute;
Попытка
Rs.MoveFirst();
Пока Rs.EOF() = 0 do
Если (Rs.Fields("id_azs").Value=idAZS)И(Rs.Fields("n_report").Value=НомерОтчета)И(Rs.Fields("volume").Value<>0)И(Сп.Принадлежит(Rs.Fields("id_tovar").Value)=1) Тогда
ТЗ.ПолучитьСтрокуПоНомеру(Rs.Fields("id_tovar").Value-10000);
Если Rs.Fields("typs_sale").Value=0 Тогда//нал
ТЗ.КолвоНал=ТЗ.КолвоНал+Rs.Fields("volume").Value;
ТЗ.СуммаНал=ТЗ.СуммаНал+Rs.Fields("sum").Value;
ТЗ.Цена=Rs.Fields("price").Value;
Иначе
ТЗ.КолвоБезНал=ТЗ.КолвоНал+Rs.Fields("volume").Value;
Если Rs.Fields("sum").Value<>0 Тогда
Предупреждение("При продаже бензинов по безналу стоит ненулевая сумма");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Rs.MoveNext();
КонецЦикла;
Исключение
Предупреждение("Ошибка чтения данных. Вероятно, данный отчет smena совсем пустой");
Возврат;
КонецПопытки;

Строим саму Сп
Конт=СоздатьОбъект("СписокЗначений");
Конт.Установить("ТипИмпорта","Автоматический");
Конт.Установить("ДатаДок",НачДата);
Конт.Установить("Основание",Прав(СокрЛП(СтрФайл),50));
Конт.Установить("Склад",Склад);
Конт.Установить("СменаСВрем",СменаСВрем);
Конт.Установить("СменаПоВрем",СменаПоВрем);
Конт.Установить("СменаСДат",СменаСДат);
Конт.Установить("СменаПоДат",СменаПоДат);
Конт.Установить("ДеньгиНаНачало",ДеньгиНаНачало);
Конт.Установить("ДеньгиНаКонец",ДеньгиНаКонец);
Конт.Установить("Инкас",Инкас);
Конт.Установить("Данные",ТЗ);
ОткрытьФорму("Документ.СменныйОтчет",Конт);

Обратите внимание на сигнатуру ТипИмпорта - с помощью ее мы сможем определить, создается ли документ интерактивно или из обработки, если да, то с какой.

И в модуле формы документа строим документ
Процедура ВводНового(Призн,Об)
Если Призн=0 Тогда
ЗаполнитьШапку(Контекст);
Валюта=Константа.ОснВалютаПродажи;
КонецЕсли;
ДатаКурса=ДатаДок;
Курс=КурсВалюты(Валюта,ДатаКурса);
СчетТМЦ=Константа.ОсновнойСчетРозницы;
СменаСВрем="08:00";
СменаСДат=ДатаДок-1;
СменаПоВрем="08:00";
СменаПоДат=ДатаДок;
Сп=Форма.Параметр;
Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
Если Сп.Получить("ТипИмпорта")="Автоматический" Тогда
//уверены, что документ строится из обработки
ДатаДок=Сп.Получить("ДатаДок");
Основание=Сп.Получить("Основание");
Склад=Сп.Получить("Склад");
СменаСВрем=Сп.Получить("СменаСВрем");
СменаПоВрем=Сп.Получить("СменаПоВрем");
СменаСДат=Сп.Получить("СменаСДат");
СменаПоДат=Сп.Получить("СменаПоДат");
ОстатокГРННачало=Сп.Получить("ДеньгиНаНачало");
ОстатокГРННКонец=Сп.Получить("ДеньгиНаКонец");
Инкасация=Сп.Получить("Инкас");
ТЗ=Сп.Получить("Данные");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
НоваяСтрока();
ТМЦ=ТЗ.ТМЦ;
ВыборТМЦ();
Цена=ТЗ.Цена;
ОстатокНаНачало=ТЗ.КолвоНачало;
Приход=ТЗ.Приход;
ПоНалу=ТЗ.КолвоНал;
Если ПоНалу<>0 Тогда
Цена=ТЗ.СуммаНал/ПоНалу;
КонецЕсли;
ПоТалонам=ТЗ.КолвоБезНал;
РасходВсего=ПоНалу+ПоВедомостям+ПоТалонам;
СчетчикКонец=РасходВсего;
СчетчикНачало=0;
СчетчикВсего=СчетчикКонец-СчетчикНачало-СчетчикСлилиЗалили;
ОстатокНаКонец=ТЗ.КолвоКонец;
ФактичОстаток=ОстатокНаКонец;
Сумма=ТЗ.СуммаНал;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//--------------------------------------------

Результат: открыта форма нового документа, поля заполнены, но документ не записан. Документ может быть записан и проведен только интерактивно, с соответствующей записью в журнале регистрации.

Если дадите мыло, то намылю обработку целиком.
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Студент)
Ответ отправлен: 04.04.2007, 15:38

Отвечает: Strawberry
Здравствуйте, Darina!
Попробуйте так:
НачатьТранзакцию();
Док. Записать();
ОткрытьФорму(Док.ТекущийДокумент());
ОтменитьТранзакцию();

Приложение:

---------
Мальчик-извращенец прочел деду Морозу с табуретки всего Пастернака!

Ответ отправил: Strawberry (статус: 5-ый класс)
Ответ отправлен: 04.04.2007, 15:44
Оценка за ответ: 4
Комментарий оценки:
Так появляется сообщение об ошибке (по поводу Операции)

Отвечает: Kim
Здравствуйте, Darina!
Нужно просто закомментировать строку
//Док.Записать();

и все
Ответ отправил: Kim (статус: 2-ой класс)
Ответ отправлен: 04.04.2007, 16:23
Оценка за ответ: 2

Отвечает: Ovr1970
Здравствуйте, Darina!
Подобная функциональность делается примерно так.
Во первых, новый документ создается с помощью оператора
ОткрытьФорму("Документ.ПоступлениеТовара",Парам);

Во вторых, заполняет он себя сам, т.е. в документе в процедуре "ВводНового" или "ПриОткрытии" вызывается Ваша процедура Сформировать, но с параметром "Контекст". В процедуре нужно просто убрать операторы
Док.Создать...
Док.Новый...
Док.Записать...
ОткрытьФорму...
Ответ отправил: Ovr1970 (статус: Студент)
Ответ отправлен: 05.04.2007, 10:54
Оценка за ответ: 4
Комментарий оценки:
Не поняла... К меня же внешняя обработка...


Вопрос № 81.078
Здравствуйте!

Скажите пожайлуста как обработать такую строку и записать в ТаблицуЗначений (ТЗ)

"1",11111,"01.01.2007","ИВАНОВ ИВАН ИВАНОВИЧ, д.р. 22.08.1963"

Необходимо чтобы в ТЗ были отражены ТОЛЬКО:

01.01.07 ИВАНОВ ИВАН ИВАНОВИЧ 22.08.1963

Спасибо заранее всем
Отправлен: 04.04.2007, 19:09
Вопрос задал: AIvanov (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Яна
Здравствуйте, AIvanov!
1. Найти вторую запятую
2. Считать дату, в ней всегда постоянное количество символов. Преобразовать в дату при необходимости и записать в ТаблицуЗначений
3. Через 3 символа после даты начинается ФИО и заканчивается запятой. Копируем этот кусочек и записываем в ТаблицуЗначений
4. Копируем с конца строки число символов, соответствующее дате, при необходимости преобразовать к типу Дата, записать в ТаблицуЗначений.

Рекомендую посмотреть в синтакс-помощнике (или справочнике) функции для работы со строками.
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 04.04.2007, 20:24

Отвечает: Полозов Олег aka Asher
Здравствуйте, AIvanov!

Что то типа для 8.0:
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(ПерваяДата);
ТЗ.Колонки.Добавить(ФИО);
ТЗ.Колонки.Добавить(ДатаРождения);

Строка = ПолученнаяСтрока; // получаете из текстового файла например
Строка = Прав(Строка,СтрДлина(Строка)-11); //убираем левые символы
// подойдет в случае если начало постоянное т.е. количество символов не меняется.
// если нет придется поизвращаться
ПерваяДата = Лев(Строка,10); // тупо режем дату слева
Строка = Прав(Строка,СтрДлина(Строка)-13); // еще раз отрезаем
ФИО = Лев(Строка, Найти(Строка, ",")-1); // получаем ФИО
ДатаРождения = Прав(Строка,10) // дата рождения.

НоваяСтрока = ТЗ.Добавить()
НоваяСтрока.ПерваяДата = ПерваяДата;
НоваяСтрока.ФИО = ФИО;
НоваяСтрока.ДатаРождения = ДатаРождения;

Если считываем группу строк, то загоняем все это дело в цикл


Ответ отправил: Полозов Олег aka Asher (статус: 3-ий класс)
Ответ отправлен: 05.04.2007, 03:33

Отвечает: Palkin
Здравствуйте, AIvanov!
Рекомендую воспользоваться методом списка значений ИзСтрокиСРазделителями().
Примерный код:
СЗ = СоздатьОбъект("СписокЗначений");
СЗ.ИзСтрокиСРазделителями(<ВашаСтрока>);
Поз = Найти(СЗ.ПолучитьЗначение(4), ",");
ТЗ.Колонка1 = СЗ.ПолучитьЗначение(3);
ТЗ.Колонка2 = Лев(СЗ.ПолучитьЗначение(4), Поз - 1);
ТЗ.Колонка3 = Прав(СЗ.ПолучитьЗначение(4), 10);
Ответ отправил: Palkin (статус: 4-ый класс)
Ответ отправлен: 05.04.2007, 06:47

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, AIvanov!
Вот пример парсера. Правда, он парсит по пробелу, разделяя имя, фамилию, отчество, а Вам нужно парсить по запятой, отрезая кавычки
ИмяОтчество=СокрЛП(Сред(Спр.Наименование,Найти(Спр.Наименование," ")+1));
Анк.NAME_U=Лев(ИмяОтчество,Найти(ИмяОтчество," ")-1);
Анк.FATH_U=СокрЛП(Сред(ИмяОтчество,Найти(ИмяОтчество," ")+1));
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Студент)
Ответ отправлен: 05.04.2007, 19:58


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.47 от 06.04.2007
Яндекс Rambler's Top100

В избранное