powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Прямой доступ к данным 1С:Предприятие через LinqToSql
11 сообщений из 11, страница 1 из 1
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36261427
Elisy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Предлагаю вашему вниманию статью " Использование технологии LinqToSql для прямого доступа к данным 1С:Предприятие "
...
Рейтинг: 0 / 0
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36261771
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПри рассмотрении способа доступа LinqToSql проблема остается – меняющиеся названия объектов БД, но ее значимость можно уменьшить, сгенерировав dbml-файл из 1С, присвоив названия классам из метаданных конфигурации 1С. Если при обновлении конфигурации изменятся имена таблиц или полей БД, то необходимо будет только заново сгенерить dbml-файл и поместить его в App_Code-каталог без изменения кода классов программы.
гламурно, ничего не скажешь
...
Рейтинг: 0 / 0
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36261805
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
УправлениеТорговлейДляКазахстана dc = new УправлениеТорговлейДляКазахстана(ConfigurationManager.ConnectionStrings["GalTUS2ConnectionString"].ConnectionString);
Table<СправочникНоменклатура> table = dc.GetTable<СправочникНоменклатура>();
Взбодрило.
Киньте ещё примерчиков.
...
Рейтинг: 0 / 0
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36261845
Elisy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bured,
Пожалуйста, не жалко :)

var видыТоваров = from видТовара in dc.GetTable<РегистрСведенийЗначенияСвойствОбъектов>()
join видТовараСвойство in dc.GetTable<ПланВидовХарактеристикСвойстваОбъектов>() on видТовара.Свойство equals видТовараСвойство.Ссылка
join значениеСвойства in dc.GetTable<СправочникЗначенияСвойствОбъектов>() on видТовара.Значение equals значениеСвойства.Ссылка
where видТовараСвойство.Наименование == "Вид товара"
select new { НоменклатураСсылка = видТовара.Объект, ВидТовараСсылка = видТовара.Значение, ВидТовара = значениеСвойства.Наименование };

var производители = from производитель in dc.GetTable<РегистрСведенийЗначенияСвойствОбъектов>()
join производительСвойство in dc.GetTable<ПланВидовХарактеристикСвойстваОбъектов>() on производитель.Свойство equals производительСвойство.Ссылка
join значениеСвойства in dc.GetTable<СправочникЗначенияСвойствОбъектов>() on производитель.Значение equals значениеСвойства.Ссылка
where производительСвойство.Наименование == "Производитель"
select new { НоменклатураСсылка = производитель.Объект, ПроизводительСсылка = производитель.Значение, Производитель = значениеСвойства.Наименование };

var коллекции = from коллекция in dc.GetTable<РегистрСведенийЗначенияСвойствОбъектов>()
join коллекцияСвойство in dc.GetTable<ПланВидовХарактеристикСвойстваОбъектов>() on коллекция.Свойство equals коллекцияСвойство.Ссылка
join значениеСвойства in dc.GetTable<СправочникЗначенияСвойствОбъектов>() on коллекция.Значение equals значениеСвойства.Ссылка
where коллекцияСвойство.Наименование == "Коллекция"
select new { НоменклатураСсылка = коллекция.Объект, КоллекцияСсылка = коллекция.Значение, Коллекция = значениеСвойства.Наименование };

DateTime текущаяДата = DateTime.Now;
DateTime началоМесяца = new DateTime(текущаяДата.Year, текущаяДата.Month, 1);
var товарыНаСкладахИтоги = from товарНаСкладе in dc.GetTable<РегистрНакопленияТоварыНаСкладахИтоги>()
where (товарНаСкладе._Period == началоМесяца)
select new { Склад = товарНаСкладе.Склад, Номенклатура = товарНаСкладе.Номенклатура, Количество = товарНаСкладе.Количество };

var товарыНаСкладахДетали = from товарНаСкладе in dc.GetTable<РегистрНакопленияТоварыНаСкладах>()
let активность = 1 //товарНаСкладе.Активность.ToArray()[0]
where (началоМесяца <= товарНаСкладе.Период) && (товарНаСкладе.Период <= текущаяДата) && (активность == 1)
select new { Склад = товарНаСкладе.Склад, Номенклатура = товарНаСкладе.Номенклатура, Количество = товарНаСкладе._RecordKind == 0 ? товарНаСкладе.Количество : -1 * товарНаСкладе.Количество };

var товарыНаСкладах = from товарНаСкладе in товарыНаСкладахИтоги.Concat(товарыНаСкладахДетали)
group товарНаСкладе by new { товарНаСкладе.Номенклатура, товарНаСкладе.Склад } into группа
let количествоСумма = группа.Sum(элемент => элемент.Количество)
select new { Склад = группа.Key.Склад, Номенклатура = группа.Key.Номенклатура, Количество = количествоСумма };

var доступныеТовары = from товарНаСкладе in товарыНаСкладах
join номенклатура in dc.GetTable<СправочникНоменклатура>() on товарНаСкладе.Номенклатура equals номенклатура.Ссылка
join видТовара in видыТоваров on номенклатура.Ссылка equals видТовара.НоменклатураСсылка
join производитель in производители on номенклатура.Ссылка equals производитель.НоменклатураСсылка
join коллекция in коллекции on номенклатура.Ссылка equals коллекция.НоменклатураСсылка
join еи in dc.GetTable<СправочникЕдиницыИзмерения>() on номенклатура.ЕдиницаХраненияОстатков equals еи.Ссылка
where товарНаСкладе.Количество > 0
select new Товар
{
Ссылка = товарНаСкладе.Номенклатура,
Наименование = номенклатура.Наименование,
Остаток = (double)товарНаСкладе.Количество,
ВидТовара = видТовара.ВидТовара,
Производитель = производитель.Производитель,
Коллекция = коллекция.Коллекция,
ЕИ = еи.Наименование
};
...
Рейтинг: 0 / 0
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36262396
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раскладку переключать не задалбывает? :)
...
Рейтинг: 0 / 0
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36263266
Elisy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зыраскладку переключать не задалбывает? :)
Сначала непривычно было, но код красивее становится, особенно, когда смотришь со стороны. Многие почему-то не знают, что C# поддерживает русские названия переменных и классов, удивляются.
...
Рейтинг: 0 / 0
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36265336
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предлагаю потратить пол часа драгоценного времени и написать pre-build preprocessor, который будет реплейсить кейворды на альтернативные, например:

for=>для
if=>если
void=>пустота
var=>какието

ну и т.д... будет ещё красивее:

Код: plaintext
1.
2.
3.
4.
5.
какието видыТоваров = из видТовара в dc.GetTable<РегистрСведенийЗначенияСвойствОбъектов>()
объединить видТовараСвойство в dc.GetTable<ПланВидовХарактеристикСвойстваОбъектов>() на видТовара.Свойство равняется видТовараСвойство.Ссылка
объединить значениеСвойства в dc.GetTable<СправочникЗначенияСвойствОбъектов>() на видТовара.Значение равняется значениеСвойства.Ссылка
где видТовараСвойство.Наименование == "Вид товара"
выбрать новый{ НоменклатураСсылка = видТовара.Объект, ВидТовараСсылка = видТовара.Значение, ВидТовара = значениеСвойства.Наименование };

эээх, красота...
...
Рейтинг: 0 / 0
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36265564
слоненок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы,
я бы так не радовался. Все на самом деле очень грустно. Все просто катастрофически беспросветно.
...
Рейтинг: 0 / 0
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36265633
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты просто ничего не понимаешь
...
Рейтинг: 0 / 0
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36265757
Elisy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зыпредлагаю потратить пол часа драгоценного времени и написать pre-build preprocessor, который будет реплейсить кейворды на альтернативные, например:

for=>для
if=>если
void=>пустота
var=>какието

Если новая версия C# будет поддерживать переопределение keywords, обязательно так и сделаю, чтобы как можно больше 1С-овцев приобщилось.
...
Рейтинг: 0 / 0
Прямой доступ к данным 1С:Предприятие через LinqToSql
    #36267845
слоненок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыты просто ничего не понимаешь .. :7
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Прямой доступ к данным 1С:Предприятие через LinqToSql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]